簡體   English   中英

PHP並發HTTP請求?

[英]PHP Concurrent HTTP requests?

我想知道在PHP中執行並發HTTP請求的最佳方法是什么? 我有很多數據可以獲取,我寧願一次做多個請求來檢索所有數據。

有人知道我怎么做嗎? 最好是匿名/回調函數mannor ...

謝謝,

湯姆。

您可以使用curl_multi ,它在單個curl句柄下內部觸發多個單獨的請求。

但是否則PHP本身不會以任何方式/形狀/形式“多線程”並且不會允許事物並行運行,除非通過嚴重的黑客攻擊(多個並行腳本,一個腳本通過exec()啟動多個后台任務等等... )。

您可以嘗試curl_multi()或使用較低級別的函數socket_select()

或者,如果您願意,您可以將數據作為json發送給您。 在PHP中,您可以再次將其碎片整理為所有值。 例如。

xhttp.open("GET", "gotoChatRoomorNot.php?q=[{"+str+"},{"+user1+"},{"+user2"}]", true);

在php中你可以按照這個來獲取你的數據: 如何用PHP從JSON中提取數據?

因此,以json格式創建一個字符串,並通過http發送整個內容。 我認為你可以用xml執行相同的行為,但我不知道xml

你可以使用HttpRequestPool http://www.php.net/manual/de/httprequestpool.construct.php

$multiRequests = array(
  new HttpRequest('http://www.google.com', HttpRequest::METH_GET),
  new HttpRequest('http://www.yahoo.com', HttpRequest::METH_GET)
  new HttpRequest('http://www.bing.com', HttpRequest::METH_GET)
);

$pool = new HttpRequestPool();
foreach ($multiRequests as $request)
{
  $pool->attach($request);
}

$pool->send();

foreach($pool as $request) 
{
  echo $request->getResponseBody();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM