2011-05-24 84 views
2

我試圖連接到使用PHP的外部SOAP服務,並寫了一個小的php測試腳本,只是連接到服務並執行一個簡單的請求來檢查一切正常。PHP緩慢通過瀏覽器處理soap請求,但在命令行罰款

這一切都可以正常工作,但是當我通過瀏覽器請求運行時,它非常慢,需要40秒的時間才能建立初始連接。當我在命令行上使用完全相同的腳本執行相同的請求時,它會直接通過。

有沒有人有任何想法,爲什麼這可能是?

乾杯

+0

對於它的價值,我只是嘗試將測試腳本重寫爲php shell腳本,然後使用另一個腳本來執行使用passthru()。在我看來,這應該意味着,即使從瀏覽器運行,測試腳本仍應該像在命令行上執行一樣,但我仍然看到相同的問題行爲。 – Addsy 2011-05-24 12:19:51

+0

我認爲這是壓縮,但你能給我們更多的細節或網址? – Fredrik 2011-05-24 12:23:57

+0

我不能有用地給出任何網址,我擔心它是一種付費服務,並且所有內容都被鎖定,所以我不認爲如果沒有ip註冊到提供商並且沒有身份驗證詳細信息,這些網址將無法工作。我很樂意提供其他可能有用的東西 - 還有什麼可以幫助的? – Addsy 2011-05-24 12:40:06

回答

0

也許external SOAP service試圖去檢查你的IP,並且您的服務器ICMP允許的,當你的本地網絡 - 沒有。
無論如何,這個問題可能由管理員external SOAP service :)更清楚地回答:)

+0

是的,他們是我嘗試的第一批人,但不幸的是他們不是很有幫助。當我在命令行上運行腳本時,我被ssh加入了web服務器,因此任何像這樣的檢查都應該可以正常工作?也就是說,如果出現一些DNS干擾問題,是不是會影響到兩個相同的情況? – Addsy 2011-05-24 12:15:47

+0

好吧,ssh通常工作在21端口,而不是80.也許這是一個原因。 – 2011-05-24 12:20:18

0

是否有php.ini之間的區別正在使用?

在一個標準的Ubuntu服務器安裝:

diff /etc/php5/apache2/php.ini /etc/php5/cli/php.ini

//編輯:

另一個不同之處可能是在包括路徑。如果自己在本地測試服務器上遇到麻煩,它實際上並未使用包含的soap類(它不包含任何內容,因爲搜索路徑無效),但它包含內置的soap_client類。

+0

這聽起來很有希望,但不幸的是這是一個Centos服務器,我只能找到一個php.ini。在查看過程中,我發現用戶服務器變量在2種情況下是不同的。所以顯然有兩個正在加載的配置之間的區別,但我似乎無法找到這可能是。將繼續狩獵。感謝您的建議 – Addsy 2011-05-24 12:45:31

3

PHP將wsdl緩存在/ tmp中。如果您先從命令行運行,則緩存文件將由您運行該腳本的任何用戶擁有,並且apache將無法讀取緩存。 wsdl必須每次下載和解析,速度會很慢。

檢查/ tmp/wsdl *的權限。

+0

sudo chmod 777/tmp/wsdl- *爲我做了訣竅。 (不適用於生產服務器) – 2015-04-16 01:06:00

相關問題