2014-11-05 68 views
0

我使用卷曲卷曲多线程

For (i=0; i<1000000; i++) { 

    $curl_handle=curl_init(); 
    curl_setopt($curl_handle,CURLOPT_URL,'http://example.com?page='i); 
    curl_exec($curl_handle); 
    curl_close($curl_handle); 

    // some code to save the HTML page on HDD 
} 

我想知道是否有好歹我可以加快这一进程的URL刮数据?可能是多线程?我怎么能这样做?

+0

你可以实现像异步调用这里是链接 - > https://segment.com/blog/how-to-make-async-requests-in-php/ – krish 2014-11-05 05:08:16

+0

也是如此回答@http:// stackoverflow .COM /问题/ 124462 /异步PHP通话 – krish 2014-11-05 05:09:04

回答

2

卷曲多不作并行请求,它使异步请求。

该文档在5分钟前是错误的,需要一段时间才能部署和翻译正确的文档。异步I/O(使用像cURL Multi API这样的东西)是最简单的事情,但它只能异步地发出请求;一旦下载数据(例如写入磁盘)的处理仍然会导致大量阻塞I/O,类似地,进一步处理数据(例如解析json)将在单个执行线程中同步发生。

多线程是另一种选择,这要求您有线程安全构建的PHP和安装的pthreads扩展。

多线程的优势在于,可以为每次下载和后续并行操作完成所有处理,充分利用所有可用的CPU内核。

什么是最好的,很大程度上取决于您的代码必须执行多少处理下载的数据,甚至可以认为是一个意见。