前几天看了一下swoole,今天找到了使用场景,就简单写一个demo

swoole安装教程》》之前分享过,自己去公众号找一下

本文是 php利用swoole协程启动多个子进程模式,根据服务器配置实现子进程自定义数量,从而 避免因进程过多导致服务器卡死(本人已经历)

demo场景,爬取10w+个网页内容

脚本test1.php内容

/**

* Created by PhpStorm.

* User: zhangguofu

* Date: 20/5/17

* Time: 上午12:31

*/

echo "process-start-time:" . date("Ymd H:i:s") . PHP_EOL;

$baseUrl = "http://www.baidu.com/";//自定义网页

$count = 1000;//为了方便演示,此处用1000意思一下

for ($i = 0; $i < $count; $i++) {

creatProcess($i, $baseUrl);

}

function creatProcess($i, $url)

{

// 每次过来统计一下进程数量

$cmd = "ps -ef |grep test1 |grep -v grep |wc -l";

$pCount = system($cmd);//进程数量

if ($pCount < 200) {

// 创建子进程

$process = new swoole_process(function (swoole_process $worker) use ($i, $url) {

$content = curlData($url);//方法里面处理你的逻辑

});

$pid = $process->start();

echo $url . '------第' . $i . '个子进程创建完毕'.PHP_EOL;

} else {

sleep(10);//可以根据实际情况定义

creatProcess($i, $url);

}

}

function curlData($url)

{

sleep(20);//为了让子进程多存在一段时间,让大家看到效果

$content = file_get_contents($url);

file_put_contents("./sData/baidu.txt","tttttttttttttttt".$content,FILE_APPEND);

}

echo "process-end-time:" . date("Ymd H:i:s");

执行 php test1

查看命令行输出结果

image

截图相关解释

子进程数量一直在200左右(满200我sleep了10s,所以不会一直是200)。大大提高效率

另写了一个监控脚本,每一秒输出一下进程数量

while (true){

echo "Time" . date("Ymd H:i:s").'----------';

sleep(1);

$cmd="ps -ef |grep test1 |grep -v grep |wc -l";

$ret1 = system($cmd);

}

image

image

请求1000次,时间一共是144秒,里面还有几次sleep的时间,如果去掉sleep,真实时间48s,当然,逻辑业务不一样,时间也不一样

process-start-time:20200525 18:25:36

process-end-time:20200525 18:26:24

看一下我爬取的数据 1000条没毛病

image

爬取网页数据php,不到40行代码教你如何利用php高效快速的爬取10w+网页数据相关推荐

  1. python爬取小视频-40行代码教你利用Python网络爬虫批量抓取小视频

    /1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...

  2. 40行代码教你利用Python网络爬虫批量抓取小视频

    1. 前言 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! 2. 整理思 ...

  3. 40行代码教你爬遍小视频网站

    /1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...

  4. java selenium_java+selenium,40行代码完成支付宝账单爬取

    java+selenium,40行代码完成支付宝账单爬取 需要jar selenium-server-4.0.0-alpha-5.jar 需要驱动 chromedriver.exe 驱动需要和浏览器版 ...

  5. Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息

    Crawler:基于requests库+json库+40行代码实现爬取猫眼榜单TOP100榜电影名称主要信息 目录 输出结果 实现代码 输出结果 实现代码 # -*- coding: utf-8 -* ...

  6. java+selenium,40行代码完成支付宝账单爬取

    java+selenium,40行代码完成支付宝账单爬取 需要jar selenium-server-4.0.0-alpha-5.jar 需要驱动 chromedriver.exe 驱动需要和浏览器版 ...

  7. 用python写web网页实现音乐数据库查询_Python tornado用40行代码搭建数据库交互网页实现快速全栈开发...

    作为数据分析师,我们大部分时间做的事情都是搭建线下Excel报表,这既有优点也有缺点 优点是: 开发效率 快速建模,最快十分钟就可以建模 数据传播 便于传播,发文件就是发模型 交互友好 对使用者门槛低 ...

  8. 100行代码教你爬取斗图网(Python多线程队列)

    100行代码教你爬取斗图网(Python多线程队列) 前言 根据之前写的两篇文章,想必大家对多线程和队列有了一个初步的了解,今天这篇文章就来实战一下,用多线程 + 队列 爬取斗图网的全网图片. 你还在 ...

  9. 40行代码带你免费看《海贼王-和之国》篇章

    喜欢看海贼王的各位童鞋们,草帽一伙已经来到和之国啦,动漫在7月7号将会进入和之国篇章啦! 想提前看和之国篇章的同学可以先看一波漫画啦! 说到这里我有个打算,将网站上的所有和之国篇章的漫画全都down下 ...

最新文章

  1. 重磅:ATT的《5G移动边缘计算白皮书》!
  2. mysql两者之间_sql between 语法与查询两者之间数据方法
  3. 一致性hash算法使用
  4. Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
  5. excel 表生成insert语句。
  6. 第三届人本沙龙12月活动小结
  7. 3django url name详解
  8. 使用函数求素数和_用母函数法处理一个数论问题的研究笔记
  9. linux下config文件,linux config 文件
  10. 计算一的阶乘累加到十的阶乘
  11. C语言中callback回调函数,C++回调函数(callback)的使用
  12. 经典论文之OverFeat
  13. CODESYS Visualization
  14. ewebeditor php漏洞,ewebeditor for php任意文件上传漏洞
  15. linux设置用户默认桌面背景,linux 修改桌面背景
  16. maven Web项目中POM的配置信息
  17. 电脑休眠睡眠状态下无线WiFi远程网络唤醒设置
  18. Linux两台主机之间建立信任关系
  19. JS作用域和自由变量
  20. 令程序员泪流满面的瞬间,实在忍不住笑了

热门文章

  1. SEO网站优化技巧整合
  2. 动态规划 计数型DP:dobra
  3. 关于 WARNING You are using pip version 21.1.2; however, version 22.0.4 is available.
  4. FL Studio中如何控制乐器力度?(如何画Midi CC控制器?)
  5. Ruby Enumerator的各种迭代
  6. 服务计算--简单 web 服务与客户端开发实战
  7. 年轻人为提前退休 毕业十年攒100万
  8. vue 自定义指令 权限指令
  9. vue 项目使用three.js 实现3D看房效果
  10. 26-29岁未婚女子的共同特点(转自:一个鄙视女人的男人。。同时,我也鄙视这个不尊重女人的男人)