1. 程式人生 > >phpstudy nginx下curl請求本地其他項目

phpstudy nginx下curl請求本地其他項目

兩個 brush 原因 就是 sha 網絡 連接 小工具 現象

curl 請求的時候 如果用post請求,傳遞參數為 數組的時候 header 頭 會被設置為 multipart/form-data 如果是字符串 形式 header 頭會被設置為application/x-www-urlencode

在使用數組傳值時,php://input是接收不到數據的?

今天項目中有個問題出現 ,a網站調用b網站 b網站調用遠程c網站。在curl返回值中一直出現 超時現象 ,curl 超時有兩種

一個是連接超時時間,另一個是數據傳輸的最大允許時間。

連接超時時間用 --connect-timeout 參數來指定,數據傳輸的最大允許時間用

連接超時的話,出錯提示形如:

curl: (28) connect() timed out!

數據傳輸的最大允許時間超時的話,出錯提示形如:

curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received

我今天就是出現的第二種錯誤 原因是 a和b網站都是配置在本地的,我本地是phpstudy 用的是Nginx。?

fastcig-pass的設置值(127.0.0.1:9000)。

設置都是以keepalive方式請求,接收到PHP文件時,交於後端過程PHPCGI解析處理(127.0.0.1:9000),等待響應。

而在本地文件以CURL請求本地環境中PHP文件時,之前的PHP還在等待CURL後的結果,這時9000端口已經被占用。導致CURL一直在處於等待狀態。設置了超時時間

curl_setop($ch,CURLOPT_TIMEOUT,20),過了超時時間 就返回 curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received

我的?解決方案

把b網站的server fastcgi 端口改為了9003

打開cmd

php-cgi.exe -b 127.0.0.1:9003 -c php.ini 運行這個命令 但是cmd 命令窗口不能關閉。

以下摘自網絡

上面用cmd命令行窗口是不是很麻煩,還不能關閉窗口,稍微不註意就悲劇了

可以用下面的一個小工具:RunHiddenConsole

首先你需要下載一個小文件RunHiddenConsole 然後復制到nginx目錄,新建兩個bat批處理文件,start_nginx.bat和stop_nginx.bat

註意:RunHiddenConsole.exe 一定要和兩個批處理文件在同一級目錄下 ,否則nginx啟動不了

具體兩個文件怎麽寫附件裏已經寫好了,直接下載就可以了

第一步:

將vhost.conf中的一個項目的fastcgi_pass改成9001

location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9001;
}

  

cmd運行

D:\Program Files (x86)\php\php-7.0.12-nts>php-cgi.exe -b 127.0.0.1:9001 -c php.ini

再次測試發送請求

phpstudy nginx下curl請求本地其他項目