PHP使用swoole实现多线程爬虫[通俗易懂]

PHP使用swoole实现多线程爬虫

大家好,又见面了,我是全栈君。

在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使用swoole实现多线程爬虫[通俗易懂]作为对比,单线程结果:

PHP使用swoole实现多线程爬虫[通俗易懂]

PHP使用swoole实现多线程爬虫[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111933.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript 滚动页面到指定元素位置[通俗易懂]

    JavaScript 滚动页面到指定元素位置

    2022年1月31日
    49
  • java心形代码初学者_java输出爱心代码

    java心形代码初学者_java输出爱心代码绘制心形曲线1.要求非常有名的笛卡尔曲线数学公式:(x2+y2−2ax)2=4a2(x2+y2)(x^{2}+y^{2}-2ax)^{2}=4a^{2}(x^{2}+y^{2})(x2+y2−2ax)2=4a2(x2+y2)即心形曲线,本例通过Applet绘制出笛卡尔曲线。2.实现过程笛卡尔曲线是一个圆在同样半径的圆周上滚动,在滚动的过程中一定会形成轨迹曲线。它的数学方程为x=a(2c…

    2022年10月16日
    0
  • 请求头 content-type_详解中台

    请求头 content-type_详解中台敬请关注博客,后期不断更新优质博文,谢谢这里讲解Content-Type的可用值,以及在spring MVC中如何使用它们来映射请求信息。1. Content-Type MediaType,即是InternetMediaType,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。 例如:Content-…

    2022年8月24日
    4
  • pycharm2019激活成功教程版安装教程_2019最新版本的美篇下载

    pycharm2019激活成功教程版安装教程_2019最新版本的美篇下载安装2019Pycharm最新版本-详细教程–激活码1下载安装1.1打开官网http://www.jetbrains.com/pycharm/download/#section=windows1.2.双击下载好的exe,得到如下图所示,点击next1.3.软件安装在其他盘中,比如D盘1.4.根据自己电脑选择64位还是32位,选择关联.py,选择增加更新路径1.5.继续点…

    2022年8月29日
    1
  • istat激活码(JetBrains全家桶)2022.01.31

    (istat激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    265
  • SSH Config 允许使用root密码登陆 PermitRootLogin[通俗易懂]

    SSH Config 允许使用root密码登陆 PermitRootLogin[通俗易懂]问题:我用ssh连接服务器的时候,如果不设置密钥登陆,就会登陆失败,没有办法通过密码登陆解决:首先设置允许通过密码登陆,设置PasswordAuthentication为yes设置在/etc/ssh/sshd_config中设置PermitRootLogin为yes重启sshservicesudoservicesshrestart…

    2022年6月6日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号