Swoole-进程池模块的使用

在实际项目中经常需要写一些长期运行的脚本,如基于、、实现的多进程队列消费者,多进程爬虫等等。程序员需要使用和相关的扩展库实现多进程编程,需要开发者具备深厚的系统编程功底,否则很容易出现问题。

在版本中我们将的进程管理模块封装成了类,现在可以在代码中使用的进程管理器了。

提供的进程管理器来自于,经过大量生产项目验证,稳定性和健壮性都非常高。可大大简化多进程脚本编程工作。

一、 创建进程池

在代码中使用即可创建一个进程池,构造方法的第一个参数传入工作进程的数量。使用方法设置即可在工作进程启动时执行指定的代码,可以在这里进行循环从队列中获取任务并处理。使用方法启动所有进程,管理器开始进入状态。

使用进程管理器,可以保证工作进程的稳定性。

某个工作进程遇到致命错误、主动退出时管理器会进行回收,避免出现僵尸进程

工作进程退出后,管理器会自动拉起、创建一个新的工作进程

二、信号处理

进程管理器自带了信号处理,向管理器进程发送:

信号:中止服务,向所有工作进程发送关闭进程

信号:重启工作进程,管理器会逐个重启工作进程

在工作进程中可以配合使用和实现信号处理。

三、任务投递

进程管理器自带了消息队列和消息投递的支持。可设置监听系统队列或者端口,接收任务数据。此项功能是可选的,要使用任务投递功能,需要对进程池对象设置回调。

消息队列

需要在构造方法的第二个参数传入,第三个参数设置监听的消息队列。其他程序中使用消息队列相关就可以向工作进程投递任务了。

TCP 端口

使用端口监听,需要设置构造方法的第二个参数为,并使用方法设置监听的主机和端口。

底层使用了字节长度+包体的协议。其他程序中向此端口发送数据时,需要在数据包之前增加一个长度字段。

--------------伟大的分割线----------------

PHP饭米粒(phpfamily) 由一群靠谱的人建立,愿为PHPer带来一些值得细细品味的精神食粮!

饭米粒只发原创或授权发表的文章,不转载网上的文章

所发的文章,均可找到原作者进行沟通。

也希望各位多多打赏(算作稿费给文章作者),更希望大家多多投搞。

投稿请联系:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180411G0JT8W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券