提问人:Ben 提问时间:11/17/2023 最后编辑:Ben 更新时间:11/17/2023 访问量:38
PHP/CURL 冻结服务器
PHP/CURL freezing server
问:
我有php CURL代码,通过ajax脚本运行。代码运行良好,没有问题,但我注意到,当代码执行时,整个服务器会停止/冻结,直到 CURL 完成。这只是在测试期间发生的。如果这是一个实时站点,我的服务器将处于完全超时状态。
运行 Apache2、PHP7.4、php7.4-curl、Debian 10
$url_sh = "****";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURL_TIMEOUT, 200);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL,$url_sh);
$result=curl_exec($ch);
curl_close($ch);
$obj = json_decode($result, true);
$approved_img = '<img src="'.$obj['lighthouseResult']['audits']['final-screenshot']['details']['data'].'">';
答:
0赞
Ben
11/21/2023
#1
根据@Sammitch:
如果包含此代码的页面具有打开的会话,则随后 请求将被阻止,直到会话显式关闭,或者 当代码退出时。它只针对该用户/会话被阻止,而不是 整个服务器。
评论
0赞
Sammitch
11/21/2023
您可以在长时间运行的操作之前调用 session_write_close(),
以释放另一个进程的会话锁。
评论