Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP站点正在等待ajax调用完成_Php_Process - Fatal编程技术网

PHP站点正在等待ajax调用完成

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

我有一个PHP站点,可以进行一些重大的ajax调用。它们大约需要8-10秒,并通过cURL请求与许多第三方api通信

当这些ajax调用进行时,站点的其余部分没有响应。不仅仅是这个页面,还有另一个页面上的另一个浏览器选项卡

我应该检查什么来确保PHP能够分叉多个进程,这样网站就不会挂起

PHP作为PHP fpm运行

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调用,那么该站点在睡眠完成之前没有响应。因此我认为这就是答案,但我不确定如何进行修复。我的意思是,我不能就这么早结束这节课。我需要代码运行后,这已经完成。这是最后的答案在这里,但我会为您标记它