Home - Comos/qpm GitHub Wiki
English: QPM Docs.
概览
QPM全名是 Quick Process Management Framework in PHP. PHP 是强大的web开发语言,以至于大家常常忘记PHP 可以用来开发健壮的命令行(CLI)程序以至于daemon程序。 而编写daemon程序免不了与各种进程管理打交道。QPM正是为简化进程管理而开发的类库。
以下是用QPM编写多进程程序的小例子。
//定义 mission1:每隔3秒打印一次进程信息, 无限循环。
$mission1 = function() {
while(true) {
echo "---mission 1, pid:".posix_getpid()."\n";
sleep(3);
}
};
//定义 mission2:打印信息后 3秒后退出。
$mission2 = function() {
echo "+++mission 2,pid:".posix_getpid()."\n";
sleep(3);
};
//配置: mission 1 和mission 2 同时在子进程中执行。mission 1 只允许在一个子进程中执行,mission 2 则允许2个子进程并行执行。
$config = [
['worker'=>$mission1],
['worker'=>$mission2, 'quantity'=>2]
];
// 使用multiGroupOneForOne 类型的supervisor 启动任务,意味着同组配置,当一个子进程退出后,会立即重启新的子进程继续执行任务。
Comos\Qpm\supervision\Supervisor::multiGroupOneForOne($config)->start();
QPM提供了fork的面向对象的封装,极大的简化了fork代码, 提升了可读性;一系列Supervisor的用法,可以帮助开发者编写健壮的多进程程序。 在未来的版本里,计划逐步开发出信号处理和跨进程通迅的模块。
#教程
- 安装和使用QPM
- 使用Process创建daemon程序
- 使用Supervisor创建健壮的多进程程序
- 使用Supervisor实现基于队列的并行任务处理程序
- 使用Pid 防止进程重复启动
- 使用日志,接入第三方日志
#参考