A-A+

php 多线程之 function() use() {}

2017年04月18日 16:45 学习笔记 暂无评论 阅读 8 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是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/>');
			});
		}
		}
		);
标签:

给我留言