php7 — Пользовательский SessionHandler вызывает предупреждение session_write_close ()

Я обновил свой проект с php5.6 в php7.0 и время от времени получал предупреждение php о session_write_close(), показывая мне правильный путь к моей временной папке.

Мой проект использует пользовательский обработчик сеансов базы данных, который отлично работал со старой версией php.

Ошибка заключается в следующем:

Предупреждение: неизвестно: не удалось записать данные сеанса (пользователь). Пожалуйста, подтвердите
что текущая настройка session.save_path верна (C: \ my \ path)
в Неизвестно в строке 0

Вот моя функция write ():

/**
* @param string $id
* @param string $data
* @return bool
* @throws Zend_Db_Adapter_Exception
*/
public function write($id, $data)
{
$dateTime = date('Y-m-d H:i:s');
$newDateTime = date('Y-m-d H:i:s', strtotime($dateTime . sprintf(' + %s seconds', $this->getMaxLifetime())));

$sessionValues = array("id" => $id, "expires_at" => $newDateTime, "session_data" => $data);

$sel = new Zend_Db_Select($this->_zdb);
$sel->from(self::TABLE_NAME, array('id'))
->where('id = ?', $id);
$sessionExists = (bool)$this->_zdb->fetchOne($sel);

if($sessionExists) {
$result = $this->_zdb->update(self::TABLE_NAME, $sessionValues, array('id = ?' => $id));
} else {
$result = $this->_zdb->insert(self::TABLE_NAME, $sessionValues);
}

if($result) {
return true;
} else {
return false;
}
}

Есть идеи, что я могу с этим сделать?

Спасибо

0

Решение

Хорошо, наконец я нашел решение:

Мой адаптер базы данных в моем пользовательском обработчике сеанса возвращает 0 при обновлении таблицы сеансов, которое не обновляет никаких значений.

Я возвратил результат моего запроса в функцию write ().

это парень тут объяснил эта проблема.

Функция SessionHandlerInterface :: write () вызывает это предупреждение в случае, если оно возвращает false.

Может быть, это помогает кому-то еще.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]