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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 设计类图

    设计类图

    2021年11月18日
    47
  • 微博舆情分析系统_新浪舆情通

    微博舆情分析系统_新浪舆情通1新浪微博舆情分析系统 摘要  随着互联网的迅速发展,互联网上信息也在飞速增加。如何在广泛信息中总体把握舆情,是一个很重要的问题。本系统实现了基于新浪微博的舆情分析,提供了相关话题获得、关注度曲线绘制、情感取向分析等功能;并对“复旦”关键词进行了跨越一年的舆情分析的实验。  关键词  中文信息处理; 舆情分析; 情感分析 1. 引言 随着Web2.0时…

    2022年9月19日
    3
  • Qt的下载安装全教程

    Qt的下载安装全教程Qt的安装及环境配置

    2022年5月17日
    55
  • MySQL导入Excel数据

    转载来自:https://www.cnblogs.com/yuwensong/p/4026332.html好了,现在我来介绍一下如何利用phpMyAdmin批量导入Excel内容到MySQL。首先你要知道phpMyAdmin是什么(不知道的这篇文章可以跳过了),我今天用的版本是phpMyAdmin3.2.4,MySQL的版本是5.1.41。1、第一步我们得到了一个excel表,里面有很多需…

    2022年4月5日
    48
  • android的适配器作用,适配器在Android中的作用是什么?

    android的适配器作用,适配器在Android中的作用是什么?适配器在Android中的作用是什么?我想知道在Android环境中何时,何地以及如何使用适配器。来自Android开发者文档的信息对我来说不够,我希望得到更详细的分析。11个解决方案39votesAndroid中的适配器基本上是UI组件和将数据填充到UI组件的数据源之间的桥梁例如,通过使用数据源数组中的列表适配器来填充列表(UI组件)。success_anilanswered2019-06…

    2022年6月11日
    34
  • Django菜鸟教程学习记录(一)

    Django菜鸟教程学习记录(一)创建项目django-admin.pystartprojectHelloWorld就会在当前目录下创建一个名为HelloWorld的文件夹。启动项目cdHelloWorldpython3manage.pyrunserver创建视图在helloworld的文件夹下新建一个views.py的文件并添加内容fromdjango.httpimportHttpResponsedefhello(request):returnHttpResponse(“Hello

    2025年10月7日
    2

发表回复

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

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