Php Symfony 2长http请求锁定所有其他操作,试图关闭会话锁定,但未';不行?

Php Symfony 2长http请求锁定所有其他操作,试图关闭会话锁定,但未';不行?,php,symfony,session,locking,Php,Symfony,Session,Locking,您好,我正在使用symfony2进行一些长API调用处理 例如,完成此通话大约需要20分钟 $response = simplexml_load_file($apicall); 问题是每当我在另一个选项卡中打开任何其他操作时。它基本上要等到20分钟结束后才能加载结果。我什么都试过了。我知道这可能与会话锁有关,但我尝试使用 $session = $this->get('session'); $session->save(); 而且 session_write_close();

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

$response = simplexml_load_file($apicall);
问题是每当我在另一个选项卡中打开任何其他操作时。它基本上要等到20分钟结束后才能加载结果。我什么都试过了。我知道这可能与会话锁有关,但我尝试使用

$session = $this->get('session'); 
$session->save();
而且

session_write_close();

但似乎什么都不管用。我试图在API调用之前和之后关闭会话。有人知道我该怎么做吗?这已经两天了。

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

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

你可以查看一些灵感


请注意,关闭会话对您没有帮助,因为新的服务器请求将启动新会话。

考虑将其作为symfony命令任务处理,我必须阅读相关内容。您可以详细解释一下吗?您可以编写一个可以通过CLI运行的进程,或者通过cronjob进行调度的进程,来完成一些工作。取决于您必须如何处理长api调用的响应。如果您可以将任务的逻辑转换为批处理,请考虑我的选择,否则检查其他用户的答案。希望这有帮助谢谢你的回答,我实际上试着使用不同的浏览器,但它仍然要等到其他操作完成。所以我不知道。你的CPU呢?也许你20分钟的api调用使用了100%的CPU,所以你无法从服务器上得到任何响应。我现在实际上在使用本地机器。你认为这个电话会消耗100%的cpu吗。在托管服务器上,我确实在非symfony调用和symfony操作之间遇到了相同的问题。symfony操作总是等到调用完成后才响应。