]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/MemcachedSessions.php
MediaWiki 1.5.8 (initial commit)
[autoinstallsdev/mediawiki.git] / includes / MemcachedSessions.php
1 <?php
2 /**
3  * This file gets included if $wgSessionsInMemcache is set in the config.
4  * It redirects session handling functions to store their data in memcached
5  * instead of the local filesystem. Depending on circumstances, it may also
6  * be necessary to change the cookie settings to work across hostnames.
7  * See: http://www.php.net/manual/en/function.session-set-save-handler.php
8  *
9  * @package MediaWiki
10  */
11
12 /**
13  * @todo document
14  */
15 function memsess_key( $id ) {
16         global $wgDBname;
17         return "$wgDBname:session:$id";
18 }
19
20 /**
21  * @todo document
22  */
23 function memsess_open( $save_path, $session_name ) {
24         # NOP, $wgMemc should be set up already
25         return true;
26 }
27
28 /**
29  * @todo document
30  */
31 function memsess_close() {
32         # NOP
33         return true;
34 }
35
36 /**
37  * @todo document
38  */
39 function memsess_read( $id ) {
40         global $wgMemc;
41         $data = $wgMemc->get( memsess_key( $id ) );
42         if( ! $data ) return '';
43         return $data;
44 }
45
46 /**
47  * @todo document
48  */
49 function memsess_write( $id, $data ) {
50         global $wgMemc;
51         $wgMemc->set( memsess_key( $id ), $data, 3600 );
52         return true;
53 }
54
55 /**
56  * @todo document
57  */
58 function memsess_destroy( $id ) {
59         global $wgMemc;
60         $wgMemc->delete( memsess_key( $id ) );
61         return true;
62 }
63
64 /**
65  * @todo document
66  */
67 function memsess_gc( $maxlifetime ) {
68         # NOP: Memcached performs garbage collection.
69         return true;
70 }
71
72 session_set_save_handler( 'memsess_open', 'memsess_close', 'memsess_read', 'memsess_write', 'memsess_destroy', 'memsess_gc' );
73
74 ?>