shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

file.php (1472B)


      1 <?php
      2 namespace Session;
      3 class File {
      4 	private $directory;
      5 
      6 	public function read($session_id) {
      7 		$file = DIR_SESSION . '/sess_' . basename($session_id);
      8 
      9 		if (is_file($file)) {
     10 			$handle = fopen($file, 'r');
     11 
     12 			flock($handle, LOCK_SH);
     13 
     14 			$data = fread($handle, filesize($file));
     15 
     16 			flock($handle, LOCK_UN);
     17 
     18 			fclose($handle);
     19 
     20 			return unserialize($data);
     21 		} else {
     22 			return array();
     23 		}
     24 	}
     25 
     26 	public function write($session_id, $data) {
     27 		$file = DIR_SESSION . '/sess_' . basename($session_id);
     28 
     29 		$handle = fopen($file, 'w');
     30 
     31 		flock($handle, LOCK_EX);
     32 
     33 		fwrite($handle, serialize($data));
     34 
     35 		fflush($handle);
     36 
     37 		flock($handle, LOCK_UN);
     38 
     39 		fclose($handle);
     40 
     41 		return true;
     42 	}
     43 
     44 	public function destroy($session_id) {
     45 		$file = DIR_SESSION . '/sess_' . basename($session_id);
     46 
     47 		if (is_file($file)) {
     48 			unset($file);
     49 		}
     50 	}
     51 
     52 	public function __destruct() {
     53 		if (ini_get('session.gc_divisor')) {
     54 			$gc_divisor = ini_get('session.gc_divisor');
     55 		} else {
     56 			$gc_divisor = 1;
     57 		}
     58 
     59 		if (ini_get('session.gc_probability')) {
     60 			$gc_probability = ini_get('session.gc_probability');
     61 		} else {
     62 			$gc_probability = 1;
     63 		}
     64 
     65 		if ((rand() % $gc_divisor) < $gc_probability) {
     66 			$expire = time() - ini_get('session.gc_maxlifetime');
     67 
     68 			$files = glob(DIR_SESSION . '/sess_*');
     69 
     70 			foreach ($files as $file) {
     71 				if (filemtime($file) < $expire) {
     72 					unlink($file);
     73 				}
     74 			}
     75 		}
     76 	}
     77 }