溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP SOAP 客戶端訪問超時(shí)

發(fā)布時(shí)間:2020-07-12 20:54:55 來源:網(wǎng)絡(luò) 閱讀:2933 作者:付離海 欄目:web開發(fā)

今天在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è)試代碼哦。
附件:http://down.51cto.com/data/2365582
向AI問一下細(xì)節(jié)

免責(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)容。

AI