您好,登錄后才能下訂單哦!
今天在windows機器上做PHP+SOAP的測試。
服務端環境: windows
客戶端環境: windows
服務端和客戶端都在一個環境(windows)上。
遇到的問題:服務端能正常的啟動,客戶端訪問服務端的時候,一直顯示超時 504錯誤。
找了很久的資料都沒解決,當看到有一篇文章里寫到:
我的開發環境是nginx+php,準備作一個soap的實驗,soapclient和soapserver都是在我的開發機上,用soapclient訪問soapserver的時候,總是返回504錯誤,相同的代碼放到apache+php_module的環境下沒有問題。
nginx的錯誤日志顯示,client和server的錯誤都是fastcgi超時,我一度懷疑是soapserver的問題,soapserver超時不響應,導致了soapclient的超時。
但是我用cli模式執行client,server能正常返回,說明不是soapserver的問題。
用nginx下的client訪問apache上的server,正常
用apache下的client訪問nginx上的server,正常
我恍然大悟,是不是進程數的問題,先懷疑nginx,后懷疑php-cgi,一查資料,如果用php-cgi -b9000直接器fastcgi的話,同時只能處理一個請求,soapclient和soapserver需要兩個進程,soapclient把進程掛 起等soap server返回,但是soapserver等待soapclient釋放phpcgi的進程,所以一直都是返回504了。
趕緊打個fpm的補丁,困惑n天的問題解決了。
網上有篇這樣的解決辦法不過看不明白啊,也不知道好不好用
來自: http://www.oschina.net/question/1404650_133899
好,看完后,我的情況的和描述的一樣,那就照著這個思路去做吧,相信我,是成功的。
首先: 給PHP開啟多個進程,因為默認的是一個進程,windows環境需要類似fpm這樣的php進程管理,在網上找了個xxfpm,附件里面有
配置:
啟動fastcgi 一般的配置
D:/php55n/php-cgi.exe -b 127.0.0.1:9000 -c D:/php55n/php.ini xxfpm D:/php55n/php-cgi.exe -n 2 -p 9000 xxfpm D:/php55n/php-cgi.exe -n 2 -p 9001
上面是三個開啟php進程的命令啊。
其次:配置nginx
#服務端配置 server { listen 80; server_name server.com; index index.html index.htm index.php; root D:/php_workplace/php_soap; location / { try_files $uri $uri/ /index.php; } location ~*\.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } #客戶端配置 server { listen 81; server_name client.com; index index.html index.htm index.php; root D:/php_workplace/php_soap; location / { try_files $uri $uri/ /index.php; } location ~*\.php$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
最后:開始測試
測試地址:http://client.com:81/client.php
返回:哈哈,能能訪問啦
附件里面有測試代碼哦。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。