A-A+
php 多线程之 function() use() {}

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】
因为最近在写弄一个多线程采集的东东,用到了一个多线程采集的插件,但是因为这个多线程采集的时候是闭包的,直接会给采集结果,这个采集结果没办法实际利用。所以嘞。最终百度了一下,发现function() use() {} 可以很好的解决这个问题。看下面的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | getDatacontent(function($item) use($curl, $db){ //判断数据库中是否存在数据 if(preg_match('/(http:\/\/)|(https:\/\/)/i', $item['link'])){ $curl->add( [ 'url' => $item['link'], 'opt' => array( //这里根据自身需求设置curl参数 CURLOPT_SSL_VERIFYPEER => false, CURLOPT_REFERER => $item['link'], CURLOPT_SSL_VERIFYHOST => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_AUTOREFERER => true, CURLOPT_HEADER => array('Host: xxx.com','Accept: */*', 'X-Requested-With: XMLHttpRequest','User-Agent: xxx','Referer: http://xxx.com/','Accept-Encoding: gzip, deflate, sdch','Accept-Language: zh-CN,zh;q=0.8','X-Forwarded-For: 63.1xx.98.170','Client-Ip: 63.1xx.98.170','Cookie: __cfduid=xxxx466724219-1490855036-null%7C1491900286') ) ],function($a) use($db){ $html = preg_replace('/<head.+?>.+<\/head>/is','<head></head>',$a['content']); $data = caiji::chaxun($html,array('content'=>['table','text','-script']))->getDatacontent(); //插入数据库 if($data[0]['content']){ $db->sgkword .= '<table class="table table-hover table-condensed"><tbody><tr><td style="text-align:center;">'; $db->sgkword .= $data[0]['content']; $db->sgkword .='</td></tr></tbody></table>'; } //print_r($data[0]['content'].'----<br/>'); }); } } ); |
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏