Extracted cookie database saves to shutdown and cleaned up code
Signed-off-by: dchill42 <dchill42@gmail.com>
diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php
index 1f24456..1195ed9 100755
--- a/system/libraries/Session/Session.php
+++ b/system/libraries/Session/Session.php
@@ -42,6 +42,7 @@
public $params = array();
protected $current = null;
protected $userdata = array();
+ protected $loaded = array();
const FLASHDATA_KEY = 'flash';
const FLASHDATA_NEW = ':new:';
@@ -112,6 +113,22 @@
}
/**
+ * CI_Session destructor
+ *
+ * The destructor calls shutdown() on each loaded driver
+ */
+ public function __destruct()
+ {
+ // Call shutdown for each loaded driver
+ foreach ($this->loaded as $driver)
+ {
+ $this->$driver->shutdown();
+ }
+
+ log_message('debug', 'CI_Session Class Shutdown');
+ }
+
+ /**
* Loads session storage driver
*
* @param string Driver classname
@@ -122,6 +139,14 @@
// Save reference to most recently loaded driver as library default and sync userdata
$this->current = parent::load_driver($driver);
$this->userdata =& $this->current->get_userdata();
+
+ // Mark driver as loaded
+ if (!in_array($driver, $this->loaded))
+ {
+ $this->loaded[] = $driver;
+ }
+
+ // Return driver object
return $this->current;
}
@@ -582,6 +607,16 @@
}
/**
+ * Shut down driver
+ *
+ * @return void
+ */
+ public function shutdown()
+ {
+ // Overload this method to implement shutdown
+ }
+
+ /**
* Save the session data
*
* Data in the array has changed - perform any storage synchronization necessary