场景简述
window系统下使用phpstudy搭建集成开发环境,使用的是PHP5.6+Nginx组合,在本地项目中执行curl_exec()请求时,提示:
Maximum execution time of 30 seconds exceeded
但奇怪的是使用apache服务器却可以正常执行。
原因:
windows 下 nginx+php环境,并不支持并发。
解决方案:
windows下不支持自动拉起子进程实现并发,那么要实现并发,只能通过手动进行子进程拉起操作。实现步骤如下:
- 在配置nginx vhost时,增加fastcgi_pass的监听端口号
http {
# 其他配置省略,增加以下代码
upstream fastcgi_backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
}
}
- 在对应的sever配置中修改请求转发配置:
server{
//其他配置省略,在server对应的转发配置修改如下
location ~ \.php(.*)$ {
fastcgi_pass fastcgi_backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
#fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
#fastcgi_param PATH_INFO $fastcgi_path_info;
#fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}
}
- 通过cmd启动多个php-cgi进程
- 打开cmd 或bash 命令行运行:
<path>/php-cgi.exe -b 127.0.0.1:9000 -c <path>/php.ini
- 打开新的命令行窗口
<path>/php-cgi.exe -b 127.0.0.1:9001 -c <path>/php.ini
其中
解决方案二:
打开phpstudy的nginx.conf文件,修改配置项如下:
worker_processes 2;//设置worker进程数量