【问题标题】:php cURL request causing session deadlockphp cURL 请求导致会话死锁
【发布时间】:2016-03-22 00:25:04
【问题描述】:

我有一个使用会话检查用户是否经过身份验证的请求。然后从该请求中,我使用会话变量发出 cURL 请求(需要进行身份验证)。

问题是第一个请求一直等到 cURL 请求完成,并且 cURL 请求在初始请求完成之前无法启动会话。我遇到了一个死锁,导致两个请求都超时。

有没有办法解决这个问题?

【问题讨论】:

  • 在尝试从另一个进程读取之前释放会话文件。

标签: php session deadlock


【解决方案1】:

在第一个脚本中更新会话后, 使用session_write_close();从文件中移除锁。

在 PHP 7 中,您可以在阅读后立即解除锁定:

session_start([
    'cookie_lifetime' => 86400,
    'read_and_close'  => true,
]);

HHVM 默认执行此操作。

更好的方法是使用像 memcache 这样的非锁定会话处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多