我正在使用symfony2进行一些长API调用处理 例如,此调用大约需要20分钟才能完成
$response = simplexml_load_file($apicall);
问题在于我在另一个标签中打开任何其他操作。它基本上必须等到20分钟结束才能加载结果。我尝试了一切。我知道这可能与会话锁相关,但我尝试使用
关闭会话$session = $this->get('session');
$session->save();
以及
session_write_close();
但似乎没有任何效果。我试图在API调用之前和API调用之后关闭会话。有谁知道我该怎么办?这已经是2天了。
答案 0 :(得分:1)
这不是Symfony2
特有的 - 这就是php
和会话的工作方式。要验证这一点,您可以尝试在私有窗口或其他浏览器中调用另一个操作(以确保它是不同的会话),而您的长api调用仍处于未决状态 - 此请求应该没有问题处理(如果只有CPU是免费的)。
有几种方法可以解决这个问题,但据我所知,没有快速简便的解决方案。我建议在另一个进程中启动你的长api调用(因此它不会锁定会话)并执行另一个操作来检查你的原始任务是否完成 - 如果是,则返回结果。
您可以查看this获取一些灵感
请注意,关闭会话将无法帮助您,因为新服务器的新请求已启动。