swoole_process 实现了多进程的管理,多个进程同时进行采集任务,

公司的框架比较low,用的tp框架,结合tp框架实现多进程的采集

这是swoole好的学习资源

https://segmentfault.com/a/1190000002946586

  1.  
  1. /**
  2. * 用swoole多进程方法进行采集
  3. * 采集网贷天眼下各个平台的数据,由于网贷天眼的平台的每个参数指标对应一个ajax请求,
  4. * 所有设计每个参数指标对应一张表,这样看起来虽然比较繁琐,但有助于数据的更新和维护.
  5. * 先循环遍历出url表中所有的属于网贷天眼的url,和cid,调用各个抓取参数方法,进行
  6. * 入库操作
  7. */
  8. public function addDataSwoole()
  9. {
  10.  
  11. for ($i = 0; $i < 14; $i++) {
  12.  
  13. $process = new \swoole_process([$this, 'swooleGetContents'], true);
  14. $start = $process->start();
  15. $process->write($i);
  16. $workers[$start] = $process;
  17. }
  18.  
  19. //防止产生僵尸进程.
  20. while (true) {
  21. $res = \swoole_process::wait();
  22.  
  23. if ($res) {
  24. $pid = $res['pid'];
  25. write_logs('exit '.$pid);
  26. }else{
  27. break;
  28. }
  29. }
  30.  
  31. }
  32.  
  33. /**
  34. * 这是swoole回调函数用的
  35. * @param swoole_process $worker
  36. */
  37. public function swooleGetContents(swoole_process $worker)
  38. {
  39. $i = $worker->read();
  40.  
  41. $urls = $this->allUrls();
  42.  
  43. switch ($i) {
  44. case 0:
  45. $method = 'add_new_collect_money';
  46. break;
  47. case 1:
  48. $method = 'add_pure_money';
  49. break;
  50. case 2:
  51. $method = 'add_rate';
  52. break;
  53. case 3:
  54. $method = 'add_remainder';
  55. break;
  56. case 4:
  57. $method = 'add_paid_invest_people';
  58. break;
  59. case 5:
  60. $method = 'add_plat_paid';
  61. break;
  62. case 6:
  63. $method = 'add_top_ten_borrower';
  64. break;
  65. case 7:
  66. $method = 'add_top_ten_invest';
  67. break;
  68. case 8:
  69. $method = 'add_full_scale_time';
  70. break;
  71. case 9:
  72. $method = 'add_average_borrowing_time';
  73. break;
  74. case 10:
  75. $method = 'add_borrowing_to_invest';
  76. break;
  77. case 11:
  78. $method = 'add_invest_vs';
  79. break;
  80. case 12:
  81. $method = 'add_invest_total_vs';
  82. break;
  83. case 13:
  84. $method = 'add_new_borrowing_distribution';
  85. break;
  86. }
  87.  
  88. foreach ($urls as $v) {
  89. $res = $this->$method($v['url'], $v['cid']);
  90. }
  91.  
  92. var_dump('this process' . $method);
  93.  
  94. }
  1.  
  1.  

swoole之 swoole_process 应用于TP框架的更多相关文章

  1. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  2. tp框架之自动验证表单

    tp框架的create自动加载表单的方法可以自动根据自己定义的要求来验证表单里面的内容,但是由于是在后台执行代码,会拖慢程序运行速度,所以还是建议通过前端js来进行判断,后台只进行数据库的查询以及传值 ...

  3. 基于TP框架的ThinkCMF,控制器display方法源码分析

    昨天在写代码的时候,看见写了无数次的模版渲染方法:$this->display(),突然很想弄清楚它是如何实现的. 今天不忙,就分析了一下. class TestController exten ...

  4. tp框架---View视图层---模板继承(举例说明)

    当我们做动态页面时,我们会发现一个网站的头部和尾部是相同的,那么我们如何用tp框架来做模板呢 ? 先看一下注意事项: (1)每个区块由<block></block>标签组成 ( ...

  5. tp框架-----Model模型层

    1.Model模型层是用来做什么的呢? 主要是用来做操作数据库访问的.也就说明TP框架自带了一种访问数据库的方式,使用的是Model模型. 2.Model模型怎样使用呢? 要使用Model模型层访问数 ...

  6. tp框架的MVC模式

    一.定义 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方 ...

  7. tp框架中的一些疑点知识-5

    关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. ...

  8. 应用于Java中的一个开源的表达式语言(Expression Language)

    OGNL(英文全称:Object Graph Navigation Language,中文名:对象导航图语言)是应用于Java中的一个开源的表达式语言(Expression Language),它被集 ...

  9. TP框架I方法详解

    TP框架I方法详解   I方法是ThinkPHP众多单字母函数中的新成员,其命名来自于英文Input(输入),主要用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:I('变量类型. ...

随机推荐

  1. 南邮CTF密码学,mixed_base64

    # -*- coding:utf-8 -*- from base64 import * flag = open("code.txt").readline() # 读取密文 for ...

  2. bzoj 4991 [Usaco2017 Feb]Why Did the Cow Cross the Road III(cdq分治,树状数组)

    题目描述 Farmer John is continuing to ponder the issue of cows crossing the road through his farm, intro ...

  3. Mysql UPDATE 操作时含 Limit 注意事项

    在update时,可以使用limit来设置,更新的条数,但下面这句sql语句是错误的. LIMIT ,; //错误提示:ERROR 1064 (42000): You have an error in ...

  4. [NOIP2005] 普及组 循环

    陶陶摘苹果 校门外的树 采药 以上三道都不是重点 循环 题目描述 乐乐是一个聪明而又勤奋好学的孩子.他总喜欢探求事物的规律.一天,他突然对数的正整数次幂产生了兴趣. 众所周知,2的正整数次幂最后一位数 ...

  5. 移动端click事件延迟300ms该如何解决

    window.addEventListener( "load", function() {     FastClick.attach( document.body ); }, fa ...

  6. iOS点击cell时,控件背景色消失的解决方法

    同时调用一下两个方法: - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected ...

  7. Java高级教程:Java并发性和多线程

    Java并发性和多线程: (中文,属于人工翻译,高质量):http://ifeve.com/java-concurrency-thread-directory/ (英文):http://tutoria ...

  8. Array.prototype.map()方法详解

    Array.prototype.map() 1 语法 const new_array = arr.map(callback[, thisArg]) 2 简单栗子 let arr = [1, 5, 10 ...

  9. android studio 0.8.1使用和遇到问题解决

    谷歌6月底公布了五大系统,而且android studio同步升级到了android studio 0.8.1.升级了的android studio确实有一些新的变化.执行速度变快,而且还能够选择开发 ...

  10. Android基础新手教程——4.3.1 BroadcastReceiver牛刀小试

    Android基础新手教程--4.3.1 BroadcastReceiver牛刀小试 标签(空格分隔): Android基础新手教程 本节引言 本节我们将来学习Android四大组件中的第三个:Bro ...