最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

PHP使用swoole实现多线程爬虫

来源:动视网 责编:小采 时间:2020-11-03 18:21:09
文档

PHP使用swoole实现多线程爬虫

PHP使用swoole实现多线程爬虫:在swoole中,php可以借助其启动子进程的方式,实现php的多进程:<php $s_time = time(); echo '开始时间:'.date('H:i:s',$s_time).PHP_EOL; //进程数 $work_number=6; // $worker=[]; //模拟地址
推荐度:
导读PHP使用swoole实现多线程爬虫:在swoole中,php可以借助其启动子进程的方式,实现php的多进程:<php $s_time = time(); echo '开始时间:'.date('H:i:s',$s_time).PHP_EOL; //进程数 $work_number=6; // $worker=[]; //模拟地址
 在swoole中,php可以借助其启动子进程的方式,实现php的多进程:

<?php
$s_time = time();
echo '开始时间:'.date('H:i:s',$s_time).PHP_EOL;
//进程数
$work_number=6;
 
//
$worker=[];
 
//模拟地址
$curl=[
 'https://blog.csdn.net/feiwutudou',
 'https://wiki.swoole.com/wiki/page/215.html',
 'http://fanyi.baidu.com/?aldtype=16047#en/zh/manager',
 'http://wanguo.net/Salecar/index.html',
 'http://o.ngking.com/themes/mskin/login/login.jsp',
 'https://blog.csdn.net/marksinoberg/article/details/77816991'
];
 
//单线程模式
// foreach ($curl as $v) {
// echo curldeta($v);
// }
 
//创建进程
for ($i=0; $i < $work_number; $i++) {
 //创建多线程
 $pro=new swoole_process(function(swoole_process $work) use($i,$curl){
 //获取html文件
 $content=curldeta($curl[$i]);
 //写入管道
 $work->write($content.PHP_EOL);
 },true);
 $pro_id=$pro->start();
 $worker[$pro_id]=$pro;
}
//读取管道内容
foreach ($worker as $v) {
 echo $v->read().PHP_EOL;
}
 
//模拟爬虫
function curldeta($curl_arr)
{//file_get_contents
 echo $curl_arr.PHP_EOL;
 file_get_contents($curl_arr);
}
 
//进程回收
swoole_process::wait();
 
$e_time = time();
echo '结束时间:'.date('H:i:s',$e_time).PHP_EOL;
 
echo '所用时间:'.($e_time-$s_time).'秒'.PHP_EOL;
?>

多线程执行结果:

作为对比,单线程结果:

提升十分明显!

更多PHP相关知识,请访问PHP教程!

文档

PHP使用swoole实现多线程爬虫

PHP使用swoole实现多线程爬虫:在swoole中,php可以借助其启动子进程的方式,实现php的多进程:<php $s_time = time(); echo '开始时间:'.date('H:i:s',$s_time).PHP_EOL; //进程数 $work_number=6; // $worker=[]; //模拟地址
推荐度:
标签: php 爬虫 多线程
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top