我試圖連接到使用PHP的外部SOAP服務,並寫了一個小的php測試腳本,只是連接到服務並執行一個簡單的請求來檢查一切正常。PHP緩慢通過瀏覽器處理soap請求,但在命令行罰款
這一切都可以正常工作,但是當我通過瀏覽器請求運行時,它非常慢,需要40秒的時間才能建立初始連接。當我在命令行上使用完全相同的腳本執行相同的請求時,它會直接通過。
有沒有人有任何想法,爲什麼這可能是?
乾杯
我試圖連接到使用PHP的外部SOAP服務,並寫了一個小的php測試腳本,只是連接到服務並執行一個簡單的請求來檢查一切正常。PHP緩慢通過瀏覽器處理soap請求,但在命令行罰款
這一切都可以正常工作,但是當我通過瀏覽器請求運行時,它非常慢,需要40秒的時間才能建立初始連接。當我在命令行上使用完全相同的腳本執行相同的請求時,它會直接通過。
有沒有人有任何想法,爲什麼這可能是?
乾杯
也許external SOAP service
試圖去檢查你的IP,並且您的服務器ICMP允許的,當你的本地網絡 - 沒有。
無論如何,這個問題可能由管理員external SOAP service
:)更清楚地回答:)
是的,他們是我嘗試的第一批人,但不幸的是他們不是很有幫助。當我在命令行上運行腳本時,我被ssh加入了web服務器,因此任何像這樣的檢查都應該可以正常工作?也就是說,如果出現一些DNS干擾問題,是不是會影響到兩個相同的情況? – Addsy 2011-05-24 12:15:47
好吧,ssh通常工作在21端口,而不是80.也許這是一個原因。 – 2011-05-24 12:20:18
是否有php.ini
之間的區別正在使用?
在一個標準的Ubuntu服務器安裝:
diff /etc/php5/apache2/php.ini /etc/php5/cli/php.ini
//編輯:
另一個不同之處可能是在包括路徑。如果自己在本地測試服務器上遇到麻煩,它實際上並未使用包含的soap類(它不包含任何內容,因爲搜索路徑無效),但它包含內置的soap_client
類。
這聽起來很有希望,但不幸的是這是一個Centos服務器,我只能找到一個php.ini。在查看過程中,我發現用戶服務器變量在2種情況下是不同的。所以顯然有兩個正在加載的配置之間的區別,但我似乎無法找到這可能是。將繼續狩獵。感謝您的建議 – Addsy 2011-05-24 12:45:31
PHP將wsdl緩存在/ tmp中。如果您先從命令行運行,則緩存文件將由您運行該腳本的任何用戶擁有,並且apache將無法讀取緩存。 wsdl必須每次下載和解析,速度會很慢。
檢查/ tmp/wsdl *的權限。
sudo chmod 777/tmp/wsdl- *爲我做了訣竅。 (不適用於生產服務器) – 2015-04-16 01:06:00
對於它的價值,我只是嘗試將測試腳本重寫爲php shell腳本,然後使用另一個腳本來執行使用passthru()。在我看來,這應該意味着,即使從瀏覽器運行,測試腳本仍應該像在命令行上執行一樣,但我仍然看到相同的問題行爲。 – Addsy 2011-05-24 12:19:51
我認爲這是壓縮,但你能給我們更多的細節或網址? – Fredrik 2011-05-24 12:23:57
我不能有用地給出任何網址,我擔心它是一種付費服務,並且所有內容都被鎖定,所以我不認爲如果沒有ip註冊到提供商並且沒有身份驗證詳細信息,這些網址將無法工作。我很樂意提供其他可能有用的東西 - 還有什麼可以幫助的? – Addsy 2011-05-24 12:40:06