- if (Session::$exists) {
- $fields = ['data' => $session_data, 'expire' => $expire];
- $condition = ["`sid` = ? AND (`data` != ? OR `expire` != ?)", $session_id, $session_data, $expire];
- $this->dba->update('session', $fields, $condition);
- } else {
- $fields = ['sid' => $session_id, 'expire' => $default_expire, 'data' => $session_data];
- $this->dba->insert('session', $fields);
+ try {
+ if ($this->sessionExists) {
+ $fields = ['data' => $data, 'expire' => $expire];
+ $condition = ["`sid` = ? AND (`data` != ? OR `expire` != ?)", $id, $data, $expire];
+ $this->dba->update('session', $fields, $condition);
+ } else {
+ $fields = ['sid' => $id, 'expire' => $default_expire, 'data' => $data];
+ $this->dba->insert('session', $fields);
+ }
+ } catch (\Exception $exception) {
+ $this->logger->warning('Cannot write session.', ['id' => $id, 'exception' => $exception]);
+ return false;