所以我正在处理多达 3000 个链接,我正在使用 curl_multi 来加快处理速度。我一次使用 20 个简单的过程,等待所有 20 个完成,再处理 20 个类型的方法,但我知道这是低效的,特别是如果这 20 个链接中的一个需要永远下载。因此,我需要知道如何在从该 url 获取内容后立即通过添加/删除句柄来编写一个遍历所有 3000 个链接的循环。
我正在使用其中一些基础知识:
define('RUNATONCE', 20); // Links to process at a time
// My URL holding multi-dimensional array:
// This first dimension is about 1000 and the second dimension is 3
$allurls[0][0];
我需要能够:
1)检查句柄何时完成,并知道该句柄属于我的多维数组中的哪个url
2) 检索该句柄的内容并根据该句柄的内容是否属于$allurls[0][0],$allurls[0][1]
, 或$allurls[0][2]
(每个进程的不同进程)分配一个进程
3) 删除该句柄并添加另一个 URL,$allurls
直到处理完所有链接
4)在任何花费超过一定时间的URL上处理手动超时,比如2分钟(因为CURLOPT_CONNECTTIMEOUT
&CURLOPT_TIMEOUT
在curl_multi环境中无法正常工作(或者至少这是我基于http的经验和理解: //curl.haxx.se/mail/curlphp-2008-06/0006.html )),但我还需要知道$allurls
该 URL 是否超时...
我知道这似乎有点工作,但对于知道这一点的人来说,它不应该做那么多工作......我只是不知道如何做的细节......谢谢。