2010-08-11 36 views
0

我有一個腳本,可以調用遠程服務器上的XML API。目前我的腳本串行發送10個請求到遠程服務器。它在發送下一個請求之前完全處理每個請求。目前,這對我的服務器來說是一個巨大的瓶頸,因爲每個API請求每個請求可能需要一秒鐘。由於大多數時間都是等待遠程服務器響應,所以我想知道是否/如何並行發送請求,以便所有10個請求都使用相同的一秒延遲而不是十秒鐘的等待時間...在PHP中並行發送多個xml請求?可能?

我想過使用系統命令調用腳本10次並在後臺運行它們以有效地創建10個進程,但我不確定這是否是最好的方法。我想這個問題可能以前已經解決了。

回答

0

如果您可以使用系統命令,那麼它是可能的。

  1. 創建PHP腳本是什麼做的請求,並(共10個文件)寫入響應數據文件
  2. 寫一個PHP腳本調用系統命令來運行高於10 PHP腳本,然後等待所有執行完成
  3. 從文件中讀取響應數據
0

PHP不支持線程,但是你用curl_multi

這將並行發送您的請求。這是一個很好的解決方案,因爲大部分時間您都在網絡上等待。

如果你仔細設計(使用URL的隊列,問題,當每一個被做了處理回調),您將不必等到最長的請求完成

0

你在找什麼可能是異步調用。根據您使用的版本,可以在PHP中使用幾種不同的方法。關於這個問題的一些很好的信息: Asynchronous PHP calls?