swoole process example

简介:
$workers = [];
$worker_num = 2;

for($i = 0; $i < $worker_num; $i++)
{
   $process = new swoole_process('callback_function',false,false);
   $process->useQueue();
   $pid = $process->start();
   $workers[$pid] = $process;
   //echo "Master: new worker, PID=".$pid."\n";
}

function callback_function(swoole_process $worker)
{//子进程要处理的逻辑
   //echo "Worker: start. PID=".$worker->pid."\n";
   //recv data from master
   $recv = $worker->pop();//子进程结束从主进程传过来的数据(2)
   echo "From Master: $recv\n";
   $worker->push(" \n   hehe   \n ");//这里子进程向主进程发送  hehe(3)
//    sleep(2);//注意这里有个sleep
   $worker->exit(0);

}

//向子进程通信
foreach($workers as $pid => $process)
{
   $process->push("hello worker[$pid]\n");//主进程向子进程发生数据(1)
   sleep(3);
   $result = $process->pop();//主进程接收从子传过来的数据(4)
   echo "From worker: $result\n";//这里主进程,接受到的子进程的数据
}

for($i = 0; $i < $worker_num; $i++)
{
   $ret = swoole_process::wait();//回收结束运行的子进程(5)
   $pid = $ret['pid'];
   unset($workers[$pid]);
   echo "Worker Exit, PID=".$pid.PHP_EOL;
}


运行结果:


wKiom1m0A0nQimdvAAAuwQAO50k715.jpg


例子1:


wKioL1m0BOTALUxrAABzS1XKqPI691.jpg


例子2:

wKioL1m0BTnDbf_cAAA6TOh1FmE625.jpg




本文转自 skinglzw 51CTO博客,原文链接:http://blog.51cto.com/skinglzw/1964024,如需转载请自行联系原作者

相关文章
|
7月前
|
JavaScript 前端开发
nodejs process进程
nodejs process进程
59 0
|
7月前
|
监控 数据库连接 PHP
php中register_shutdown_function函数用法详解
通过 `register_shutdown_function`,PHP开发者可以对脚本的终止进行更精细化的处理,这个函数让开发者能在脚本的生命周期结束时有机会执行最后的操作,无论脚本是正常结束还是发生错误。由于它的高度实用性和灵活性,`register_shutdown_function`是PHP开发中不可或缺的工具之一。
108 0
|
10月前
|
应用服务中间件 nginx
ngx_http_fastdfs_process_init pid=44362023/05/13 09:31:23 [alert] 2964#0: worker process 4436 exite
ngx_http_fastdfs_process_init pid=44362023/05/13 09:31:23 [alert] 2964#0: worker process 4436 exite
41 0
|
PHP Windows
windows下 Call to undefined function posix_getpid() in ……\Workerman\Worker.php 的解决方法
windows下 Call to undefined function posix_getpid() in ……\Workerman\Worker.php 的解决方法
235 0
windows下 Call to undefined function posix_getpid() in ……\Workerman\Worker.php 的解决方法
|
PHP
swoole,swoole_timer_tick() must be callable, array given 报错异常
easyswoole框架内部交流后也说明这个问题是由于swoole版本变动,很早以前就在新版做了兼容(将intervalCheck改为public方法)
212 0
|
PHP Docker 容器
ThinkPHP5 运行Workerman报错:Fatal error: Call to undefined function pcntl_signal()
ThinkPHP5 运行Workerman报错:Fatal error: Call to undefined function pcntl_signal()
429 0
ThinkPHP5 运行Workerman报错:Fatal error: Call to undefined function pcntl_signal()
|
网络协议 PHP
Swoole 中通过 process 模块实现多进程
Swoole 中通过 process 模块实现多进程
223 0
Swoole 中通过 process 模块实现多进程
|
网络协议 前端开发 NoSQL
workerman的基本用法(二)
workerman的基本用法(二)
286 0
workerman的基本用法(二)
|
消息中间件 缓存 Unix
Swoole| Swoole 中 Process
这篇 blog 折腾了很久才写出来, 问题主要还是在 **理解** 上. 有时候就是这样,
247 0
Swoole| Swoole 中 Process
|
网络协议 网络安全 PHP
workerman的基本用法(一)
workerman的基本用法(一)
317 0