您好,登錄后才能下訂單哦!
今天在windows機(jī)器上做PHP+SOAP的測(cè)試。
服務(wù)端環(huán)境: windows
客戶端環(huán)境: windows
服務(wù)端和客戶端都在一個(gè)環(huán)境(windows)上。
遇到的問題:服務(wù)端能正常的啟動(dòng),客戶端訪問服務(wù)端的時(shí)候,一直顯示超時(shí) 504錯(cuò)誤。
找了很久的資料都沒解決,當(dāng)看到有一篇文章里寫到:
我的開發(fā)環(huán)境是nginx+php,準(zhǔn)備作一個(gè)soap的實(shí)驗(yàn),soapclient和soapserver都是在我的開發(fā)機(jī)上,用soapclient訪問soapserver的時(shí)候,總是返回504錯(cuò)誤,相同的代碼放到apache+php_module的環(huán)境下沒有問題。
nginx的錯(cuò)誤日志顯示,client和server的錯(cuò)誤都是fastcgi超時(shí),我一度懷疑是soapserver的問題,soapserver超時(shí)不響應(yīng),導(dǎo)致了soapclient的超時(shí)。
但是我用cli模式執(zhí)行client,server能正常返回,說明不是soapserver的問題。
用nginx下的client訪問apache上的server,正常
用apache下的client訪問nginx上的server,正常
我恍然大悟,是不是進(jìn)程數(shù)的問題,先懷疑nginx,后懷疑php-cgi,一查資料,如果用php-cgi -b9000直接器fastcgi的話,同時(shí)只能處理一個(gè)請(qǐng)求,soapclient和soapserver需要兩個(gè)進(jìn)程,soapclient把進(jìn)程掛 起等soap server返回,但是soapserver等待soapclient釋放phpcgi的進(jìn)程,所以一直都是返回504了。
趕緊打個(gè)fpm的補(bǔ)丁,困惑n天的問題解決了。
網(wǎng)上有篇這樣的解決辦法不過看不明白啊,也不知道好不好用
來自: http://www.oschina.net/question/1404650_133899
好,看完后,我的情況的和描述的一樣,那就照著這個(gè)思路去做吧,相信我,是成功的。
首先: 給PHP開啟多個(gè)進(jìn)程,因?yàn)槟J(rèn)的是一個(gè)進(jìn)程,windows環(huán)境需要類似fpm這樣的php進(jìn)程管理,在網(wǎng)上找了個(gè)xxfpm,附件里面有
配置:
啟動(dòng)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
上面是三個(gè)開啟php進(jìn)程的命令啊。
其次:配置nginx
#服務(wù)端配置 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; } }
最后:開始測(cè)試
測(cè)試地址:http://client.com:81/client.php
返回:哈哈,能能訪問啦
附件里面有測(cè)試代碼哦。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。