Symfony 2长http请求锁定所有其他操作,试图关闭会话锁但不起作用?

时间:2015-01-19 09:15:07

标签: php symfony session locking

我正在使用symfony2进行一些长API调用处理 例如,此调用大约需要20分钟才能完成

$response = simplexml_load_file($apicall);

问题在于我在另一个标签中打开任何其他操作。它基本上必须等到20分钟结束才能加载结果。我尝试了一切。我知道这可能与会话锁相关,但我尝试使用

关闭会话
$session = $this->get('session'); 
$session->save();

以及

session_write_close();

但似乎没有任何效果。我试图在API调用之前和API调用之后关闭会话。有谁知道我该怎么办?这已经是2天了。

1 个答案:

答案 0 :(得分:1)

这不是Symfony2特有的 - 这就是php和会话的工作方式。要验证这一点,您可以尝试在私有窗口或其他浏览器中调用另一个操作(以确保它是不同的会话),而您的长api调用仍处于未决状态 - 此请求应该没有问题处理(如果只有CPU是免费的)。

有几种方法可以解决这个问题,但据我所知,没有快速简便的解决方案。我建议在另一个进程中启动你的长api调用(因此它不会锁定会话)并执行另一个操作来检查你的原始任务是否完成 - 如果是,则返回结果。

您可以查看this获取一些灵感

请注意,关闭会话将无法帮助您,因为新服务器的新请求已启动。