Symfony:自定义会话保存处理程序最大执行时间
我正在使用Symfony的自定义会话处理程序。当我第一次设置会话时,但当我刷新页面时,它工作正常。页面将继续加载,在php.ini中定义的30秒后,将显示错误。为了设置自定义保存处理程序,我在棘轮数据库中创建了一个表会话。表中的结构和数据:max_execution_time
现在,页面顶部的脚本如下所示,用于初始化自定义保存处理程序:
<?php
ini_set('session.auto_start', false);
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
require dirname(__DIR__) . '/vendor/autoload.php';
$pdo = new \PDO('mysql:host=localhost;dbname=ratchet', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$storage = new NativeSessionStorage(array(), new PdoSessionHandler($pdo)); // Here when PdoSessionHandler class is initialized again on refreshing it locks the page there
$session = new Session($storage);
$session->start();
$username = $session->get('username');
PHP 脚本为第 153 行引发的错误:
第 153 行是以下方法中的一个语句,它执行并从数据库中读取会话值。
private function doRead($sessionId)
{
$this->sessionExpired = false;
if (self::LOCK_ADVISORY === $this->lockMode) {
$this->unlockStatements[] = $this->doAdvisoryLock($sessionId);
}
$selectSql = $this->getSelectSql();
$selectStmt = $this->pdo->prepare($selectSql);
$selectStmt->bindParam(':id', $sessionId, \PDO::PARAM_STR);
$selectStmt->execute(); // Line 153
框架组件中是否有东西坏了,或者我错过了什么?我已遵循文档。我找不到任何新的或自己添加的。
加法
除了在 Web 应用程序中初始化会话之外,我还在脚本中初始化 symfony 会话,因为需要将相同的会话对象附加到每个连接。需要注意的要点:server
- 应用程序在第一次尝试时工作正常。
- 聊天服务器按预期工作。它永远不会引发错误。
- 刷新连接到 websocket 服务器的页面时,它将保持加载状态 30 秒。然后发生错误。
- 在其他浏览器中也会发生同样的情况。就像它会让连接建立,但当我刷新时........见上文:D