We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 71dad1ff authored by Evan Prodromou's avatar Evan Prodromou

use the session class to store sessions

parent 0ca22cf6
......@@ -1278,6 +1278,16 @@ type: type of search. Ignored if PostgreSQL or Sphinx are enabled. Can either
systems. We'll probably add another type sometime in the future,
with our own indexing system (maybe like MediaWiki's).
sessions
--------
Session handling.
handle: boolean. Whether we should register our own PHP session-handling
code (using the database and memcache if enabled). Defaults to false.
Setting this to true makes some sense on large or multi-server
sites, but it probably won't hurt for smaller ones, either.
Troubleshooting
===============
......
......@@ -73,6 +73,38 @@ function handleError($error)
exit(-1);
}
function checkMirror($action_obj)
{
global $config;
static $alwaysRW = array('session', 'remember_me');
if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) {
if (is_array(common_config('db', 'mirror'))) {
// "load balancing", ha ha
$arr = common_config('db', 'mirror');
$k = array_rand($arr);
$mirror = $arr[$k];
} else {
$mirror = common_config('db', 'mirror');
}
// We ensure that these tables always are used
// on the master DB
$config['db']['database_rw'] = $config['db']['database'];
$config['db']['ini_rw'] = INSTALLDIR.'/classes/laconica.ini';
foreach ($alwaysRW as $table) {
$config['db']['table_'.$table] = 'rw';
}
// everyone else uses the mirror
$config['db']['database'] = $mirror;
}
}
function main()
{
// quick check for fancy URL auto-detection support in installer.
......@@ -146,19 +178,7 @@ function main()
} else {
$action_obj = new $action_class();
// XXX: find somewhere for this little block to live
if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) {
if (is_array(common_config('db', 'mirror'))) {
// "load balancing", ha ha
$arr = common_config('db', 'mirror');
$k = array_rand($arr);
$mirror = $arr[$k];
} else {
$mirror = common_config('db', 'mirror');
}
$config['db']['database'] = $mirror;
}
checkMirror($action_obj);
try {
if ($action_obj->prepare($args)) {
......
......@@ -254,6 +254,8 @@ $config =
'oohembed' => array('endpoint' => 'http://oohembed.com/oohembed/'),
'search' =>
array('type' => 'fulltext'),
'sessions' =>
array('handle' => false), // whether to handle sessions ourselves
);
$config['db'] = &PEAR::getStaticProperty('DB_DataObject','options');
......
......@@ -144,6 +144,9 @@ function common_ensure_session()
$c = $_COOKIE[session_name()];
}
if (!common_have_session()) {
if (common_config('sessions', 'handle')) {
Session::setSaveHandler();
}
@session_start();
if (!isset($_SESSION['started'])) {
$_SESSION['started'] = time();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment