在中北大学信息商务学院平时使用swoole进行开发中,常常遇到这种问题,改了代码之后,手动ctrl+c中断服务,再敲命令重启服务。频繁地重启,感觉心很累。
php提供了inotify扩展,调用linux的inotify系统调用,监控文件的变化.
这时候就产生了一个想法,我开一个主进程监控文件变化,再开一个子杭州学院进程运行swoole服务。主进程监听到文件变化之后,干掉子进程,然后再开一个子进程运行swoole服务. 子进程如果想优雅地退出,安装个信号处理器,在退出之前做一些操作。
<?php//index.phprequire './vendor/autoload.php';restart:$pid = pcntl_fork();if ($pid > 0) { $fd = inotify_init(); $watch_descriptor = inotify_add_watch($fd, './src/', in_modify); $events = inotify_read($fd); posix_kill($pid, sigterm); fclo($fd); pcntl_wait($status); goto restart;} elif ($pid == 0) { \church\application::run();} el { exit(0);}
<?phpnamespace church;/**u psr\http\message\rverrequestinterface;u react\http\respon;u react\http\rver;**/class application{ public static function run() { /** $lo人际交往障碍op = \react\eventloop\factory::create(); $loop->addsignal(sigterm, function() u ($loop) { $loop->stop(); }); $rver = new rver(function (rverrequestinterface $request) { return new respon( 200, array( 'content-type' => 'text/plain' ), "hello world1!\n" ); }); $socket = new \react\socket\rver(8080, $loop); $rver->listen($socket); $loop->run(); **/ //高性能http服务器 $http = new \swoole\http\rver("127.0.0.1", 9501); $http->on("start", function ($rver最美短句) { echo "swoole http rver is started at http://127.0.0.1:9501\n"; }); $http->on("request", function ($request, $respon) { $respon->header("content-type", "text/plain"); $respon->end("hello world1\n"); }); $http->start(); }}
个人觉得这里最优雅的实现方式应该是用goto了。
到此这篇关于php使用goto实现自动重启swoole、reactphp、workerman服务的代码的文章就介绍到这了,更多相关php自动重启swoole、reactphp、workerman服好听霸气的网名务内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-08 17:17:33,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/6b2eb4bf9b21acc9237bc33de4352765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php使用goto实现自动重启swoole、reactphp、workerman服务的代码.doc
本文 PDF 下载地址:php使用goto实现自动重启swoole、reactphp、workerman服务的代码.pdf
留言与评论(共有 0 条评论) |