trim函数实现php,php中的实现trim函数代码

这段代码演示了如何在PHP中使用curl库进行并行URL处理,实现批量请求。通过curl_multi_init()和curl_multi_exec()函数,可以同时发起多个HTTP请求,提高效率。回调函数用于处理每个URL返回的数据,例如检查HTTP状态码或错误信息。示例展示了如何抓取和处理一批包含搜索引擎关键词的URL。
摘要由CSDN通过智能技术生成

示例代码:/*

@purpose: 使用curl并行处理url

@return: array 每个url获取的数据

@param: $urls array url列表

@param: $callback string 需要进行内容处理的回调函数。示例:func(array)*/

function curl($urls = array(), $callback = ''){

$response = array();

if (empty($urls)) {

return $response;

}

$chs = curl_multi_init();

$map = array();

foreach($urls as $url){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_NOSIGNAL, true);

curl_multi_add_handle($chs, $ch);

$map[strval($ch)] = $url;

}

do{

if (($status = curl_multi_exec($chs, $active)) != CURLM_CALL_MULTI_PERFORM) {

if ($status != CURLM_OK) { break; } //如果没有准备就绪,就再次调用curl_multi_exec

while ($done = curl_multi_info_read($chs)) {

$info = curl_getinfo($done["handle"]);

$error = curl_error($done["handle"]);

$result = curl_multi_getcontent($done["handle"]);

$url = $map[strval($done["handle"])];

$rtn = compact('info', 'error', 'result', 'url');

if (trim($callback)) {

$callback($rtn);

}

$response[$url] = $rtn;

curl_multi_remove_handle($chs, $done['handle']);

curl_close($done['handle']);

//如果仍然有未处理完毕的句柄,那么就select

if ($active > 0) {

curl_multi_select($chs, 0.5); //此处会导致阻塞大概0.5秒。

}

}

}

}

while($active > 0); //还有句柄处理还在进行中

curl_multi_close($chs);

return $response;

}

//使用方法function deal($data){

if ($data["error"] == '') {

echo $data["url"]." -- ".$data["info"]["http_code"]."\n";

} else {

echo $data["url"]." -- ".$data["error"]."\n";

}

}$urls = array();for ($i = 0; $i < 10; $i++) {

$urls[] = 'http://www.baidu.com/s?wd=etao_'.$i;

$urls[] = 'http://www.so.com/s?q=etao_'.$i;

$urls[] = 'http://www.soso.com/q?w=etao_'.$i;

}curl($urls, "deal");

参考资料 php实现并发处理之curl篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值