PHP站点正在等待ajax调用完成
我有一个PHP站点,可以进行一些重大的ajax调用。它们大约需要8-10秒,并通过cURL请求与许多第三方api通信 当这些ajax调用进行时,站点的其余部分没有响应。不仅仅是这个页面,还有另一个页面上的另一个浏览器选项卡 我应该检查什么来确保PHP能够分叉多个进程,这样网站就不会挂起 PHP作为PHP fpm运行PHP站点正在等待ajax调用完成,php,process,Php,Process,我有一个PHP站点,可以进行一些重大的ajax调用。它们大约需要8-10秒,并通过cURL请求与许多第三方api通信 当这些ajax调用进行时,站点的其余部分没有响应。不仅仅是这个页面,还有另一个页面上的另一个浏览器选项卡 我应该检查什么来确保PHP能够分叉多个进程,这样网站就不会挂起 PHP作为PHP fpm运行 location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index inde
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
fastcgi_buffers 256 64k;
fastcgi_buffer_size 2400k;
fastcgi_read_timeout 6000;
uwsgi_read_timeout 6000;
include fastcgi_params;
}
nginx有足够的工作进程
user www-data;
worker_processes 16;
pid /var/run/nginx.pid;
events {
worker_connections 8000;
multi_accept on;
}
此外,我还使用sleep()和long for循环进行了测试。这两个都很好。似乎只是对外部站点的cURL调用导致了这个问题
不知道少了什么
谢谢 听起来你需要打电话 当脚本写入会话时,PHP会锁定会话文件,因此每个页面都必须等待该文件完成执行,然后才能打开会话(除非在写入后调用上述函数)
例如,假设您有一个长时间运行的Ajax进程,该进程在开始时写入会话。如果您不调用session\u write\u close来告诉PHP您的脚本已完成对会话的写入,它将锁定所有其他脚本的会话,直到执行完成。听起来您在运行AJAX时将异步功能设置为false。如何设置AJAX?所有其他AJAX都很好。它只是在后端进行cURL调用的函数,显示javascript$.post(“mycall.php”);如果mycall.php对一个php sleep()函数进行cURL调用,那么该站点在睡眠完成之前没有响应。因此我认为这就是答案,但我不确定如何进行修复。我的意思是,我不能就这么早结束这节课。我需要代码运行后,这已经完成。这是最后的答案在这里,但我会为您标记它