Php 卷曲多线程
我发现一个旋度函数,可以打开特定数量的网页打开一次也不会有输出或返回数据假将更好。我需要同时访问5-10个url。。我听说abt Curl多线程,但没有合适的函数或类来使用它 我通过搜索找到了一些,但大多数似乎是循环的意思是我没有使用连续连接只是一个接一个!我想要的东西,可以连接多个连接,而不是一个接一个 我做了一个:Php 卷曲多线程,php,mysql,Php,Mysql,我发现一个旋度函数,可以打开特定数量的网页打开一次也不会有输出或返回数据假将更好。我需要同时访问5-10个url。。我听说abt Curl多线程,但没有合适的函数或类来使用它 我通过搜索找到了一些,但大多数似乎是循环的意思是我没有使用连续连接只是一个接一个!我想要的东西,可以连接多个连接,而不是一个接一个 我做了一个: function mutload($url){ if(!is_array($url)){ exit; } for($i=0;$i<count($url);$i++){ /
function mutload($url){
if(!is_array($url)){
exit;
}
for($i=0;$i<count($url);$i++){
// create both cURL resources
$ch[] = curl_init();
$ch[] = curl_init();
// set URL and other appropriate options
curl_setopt($ch[$i], CURLOPT_URL, $url[$i]);
curl_setopt($ch[$i], CURLOPT_HEADER, 0);
curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 0);
}
//create the multiple cURL handle
$mh = curl_multi_init();
for($i=0;$i<count($url);$i++){
//add the two handles
curl_multi_add_handle($mh,$ch[$i]);
}
$active = null;
//execute the handles
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
//close the handles
for($i=0;$i<count($url);$i++){
curl_multi_remove_handle($mh, $ch[$i]);
}
curl_multi_close($mh);
}
好的!但我很困惑,它会一次或一个接一个地连接所有的URL!mre结束我正在搜索内容,我只想连接或请求到该站点,不需要任何内容。我使用了ReturnTransfer,false,但不起作用。。请告诉我谢谢 您正在寻找函数族。看一看
设置CURLOPT\u NOBODY以阻止curl下载任何内容。我没有测试您的代码,但是curl\u multi将项目从循环添加到队列中,并并行处理它们。有时,如果您试图加载100个URL,可能会出现问题,但对于一些URL来说应该没问题。如果DNS查找时间长或服务器速度慢,则所有结果都必须等待最慢的请求 此代码经过测试,应该可以正常工作,它与您的代码有些类似:
正如你说的,我做了一个脚本,请看一看@SoumoGorai用无人更新了答案。多功能将并行发送请求。你能澄清一下你剩下的问题是什么吗?我读你的问题有困难,可能是因为英语不是我的第一语言,而且你的拼字法很有创意。我认为mre代表另外一种语言,abt代表大约一种语言,对吗?你的英语很好!我不必把它读得很好,这是一些常用词,这些天来无论如何使用!你能告诉我我的脚本可以并行发送请求还是逐个发送请求?谢谢,我用了你告诉Rolling Curl的脚本。但我不需要下载1000个或更多,大部分是20-30个,很少是50个。另外,卷曲花了很多时间,3个作业需要468个卷曲,3个作业需要140个卷曲!不管怎样,你能告诉我我的函数是否可以并行运行吗?thankscurl_setopt$ch[$i],CURLOPT_RETURNTRANSFER,0;这必须是真的才能返回任何内容