windows下使用nginx服務器執行curl_exec超時問題解決:windows下手動拉起php-cgi子進程實現nginx併發處理

場景簡述

window系統下使用phpstudy搭建集成開發環境,使用的是PHP5.6+Nginx組合,在本地項目中執行curl_exec()請求時,提示:

Maximum execution time of 30 seconds exceeded

但奇怪的是使用apache服務器卻可以正常執行。

原因:

windows 下 nginx+php環境,並不支持併發。

解決方案:

windows下不支持自動拉起子進程實現併發,那麼要實現併發,只能通過手動進行子進程拉起操作。實現步驟如下:

  1. 在配置nginx vhost時,增加fastcgi_pass的監聽端口號
http {
    # 其他配置省略,增加以下代碼
    upstream fastcgi_backend {
        server 127.0.0.1:9000;
        server 127.0.0.1:9001;
    }
}
  1. 在對應的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;
	}
}

  1. 通過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

其中更換爲對應執行文件的本地路徑即可(直接物理路徑),兩個窗口都需要保持打開狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章