Esempio n. 1
0
 public function read($id)
 {
     if (!$this->session_broken) {
         try {
             $query = new Query($this->dbconnection);
             if ($this->write) {
                 // We know we are writing, so get a "FOR UPDATE" lock
                 if (!$this->lock) {
                     // First time we do this, start a transaction!
                     $query->transaction();
                     $this->lock = true;
                 }
                 $query->sql("SELECT sessiondata, expiry FROM `" . static::$tablename . "` WHERE id = ? FOR UPDATE", $id);
             } else {
                 // No Lock for Read only!
                 $query->sql("SELECT sessiondata, expiry FROM `" . static::$tablename . "` WHERE id = ?", $id);
             }
             list(list($row)) = $query->execute();
         } catch (\Automatorm\Exception\Database $e) {
             $this->session_broken = true;
             throw new Exception\Session('READ', $e);
         }
         // If not expired, get sessiondata
         if ($row['expiry'] > time()) {
             $data = $row['sessiondata'];
         } else {
             $data = '';
         }
         return (string) $data;
     }
 }