php教程网
在以往的开发项目中,要操作进程就会使用PHP自带的pcntl拓展但是pcntl存在着许多的不足:pcntl没有提供进程间通信的功能pcntl不支持重定向标准输入和输出pcntl只提供了fo游戏rk这样原始的接口,容易使用错误。
这边我们使用swoole进程管理模块,用来替代PHP的pcntl;场景:日常任务中,有时需要通过php脚本执行一些日志分析,队列处理等任务,当数据量比较大时,可以使用游戏多进程来处理准备:安装PHP_swoole拓展;。
write($data) 向管道内写入数据$data的长度在Linux系统下最大不超过8K,MacOS/FreeBSD下最大不超过2Kstart()游戏: 执行fork调用,启动子进程/** 创建子进程,将数据写入管道,然后启动子进程 */ $process = new \swoole_process([$this, sonPro游戏cessWork]); $process->write(json_encode($data_pop)); $pid = $process->start();。
swool游戏e_event_add(): 将一个socket加入到底层的reactor事件监听中;在子进程中处理一些耗时的计算或者操作;/** 获取管道的业务数据,进行相关的操作 */ publ游戏ic function sonProcessWork(\swoole_process $worker){ $GLOBALS[worker] = $worker; 游戏 swoole_event_add($worker->pipe, function($pipe) { /******start*你的业务逻辑 *******/ 游戏 ..... /******end*你的业务逻辑 *******/ $worker->exit(0); }) }
wai游戏t(false) 回收结束运行的子进程/** 根据信号处理紫禁城 */ private function sig_handler($signo) { Proces游戏s::signal(SIGCHLD, function($sig) { //必须为false,非阻塞模式 while($ret = Process::wait(fals游戏e)) { echo "PID={$ret[pid]}\n"; } }); }
以上就是php_swoole 对进程的基本操作,在实际开发游戏过程中,业务会比较复杂;我们应当配合队列来进行使用以上内容希望帮助到大家,更多PHP大厂PDF面试文档,PHP进阶架构视频资料,PHP精彩好文免费获取可以关注公众号:PHP开源社区,或者访问:。
四年精游戏华PHP技术文章整理合集——PHP框架篇四年精华PHP技术文合集——微服务架构篇四年精华PHP技术文合集——分布式架构篇四年精华PHP技术文合集——高并发场景篇四年精华PHP技术文章整理合集——数据库游戏篇
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。