如何阻止cURL使我的PHP会话死锁?

时间:2014-04-25 15:03:27

标签: php session curl

基本上,我使用cURL来调用我无法在PHP中本机实现的API。当我打电话时,它会使我的PHP会话死锁。我无法从浏览器中的其他标签连接到我的网站。如果我删除会话cookie,我可以很好地连接。之前,当我没有在cURL中超时时,这将无限期地持续。

这就是cURL的PHP​​实现是如何工作的,还是有办法绕过它?

2 个答案:

答案 0 :(得分:3)

如上所述[{3}},您可能希望在不打开会话的情况下尝试执行cURL请求,例如在发送请求之前执行session_write_close(),在您处理完请求后session_start()执行此操作。

答案 1 :(得分:1)

这与cURL无关:基本上每个长时间运行的操作都容易出现同样的问题。

以下是我们通常如何处理这个问题:

  • 应该启动进程的请求(例如,启动cURL命令)不应该这样做,而只需对其进行身份验证并为其创建一次性票证,将其存储在会话中并将其还原
  • 返回时,客户端现在应该使用一次性票证请求运行cURL,而不是会话。这使会话保持解锁状态。结果必须存储在中间。
  • 完成长时间运行的过程后,客户端使用会话收集中间存储的结果。