public function write($key, $value, $timeout = 0) { Sabel_Db_Transaction::activate(); try { if ($timeout !== 0) { $timeout = time() + $timeout; } $value = str_replace("", "\\000", serialize($value)); if ($model = $this->fetch($key, true)) { $model->save(array("value" => $value, "timeout" => $timeout)); } else { $this->model->insert(array("key" => $key, "value" => $value, "timeout" => $timeout)); } Sabel_Db_Transaction::commit(); } catch (Exception $e) { Sabel_Db_Transaction::rollback(); throw $e; } }