首页 文章

PHP并发HTTP请求?

提问于
浏览
3

我想知道在PHP中进行并发HTTP请求的最佳方法是什么?我有很多数据可以获取,我宁愿一次做多个请求来检索所有数据 .

有人知道我怎么做吗?最好是匿名/回调函数mannor ...

谢谢,

汤姆 .

4 回答

  • 9

    您可以使用curl_multi,它在单个curl句柄下内部触发多个单独的请求 .

    但是否则PHP本身不会以任何方式/形状/形式“多线程”并且不会允许事物并行运行,除非通过严重的黑客攻击(多个并行脚本,一个脚本通过exec()启动多个后台任务等等... ) .

  • 0

    您可以尝试curl_multi()或使用较低级别的函数socket_select()

  • 2

    或者如果你想,你可以发送数据为json . 在PHP中,您可以再次将其碎片整理为所有值 . 例如 .

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

    在php中你可以按照这个来获取你的数据:How do I extract data from JSON with PHP?

    因此,以json格式创建一个字符串,并通过http发送整个内容 . 我认为你可以用xml执行相同的行为,但我不知道xml

  • 1

    你可以使用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();
    }
    

相关问题