php使用goto实现自动重启swoole、reactphp、workerman服务的代码
在平时使用swoole进行开发中,常常遇到这种问题,改了代码之后,手动ctrl+c中断服务,再敲命令重启服务。频繁地重启,感觉心很累。
php提供了inotify扩展,调用linux的inotify系统调用,监控文件的变化.
这时候就产生了一个想法,我开一个主进程监控文件变化,再开一个子进程运行swoole服务。主进程监听到文件变化之后,干掉子进程,然后再开一个子进程运行swoole服务.子进程如果想优雅地退出,安装个信号处理器,在退出之前做一些操作。
0){ $fd=inotify_init(); $watch_descriptor=inotify_add_watch($fd,'./src/',IN_MODIFY); $events=inotify_read($fd); posix_kill($pid,SIGTERM); fclose($fd); pcntl_wait($status); gotoRestart; }elseif($pid==0){ \Church\Application::run(); }else{ exit(0); }
addSignal(SIGTERM,function()use($loop){ $loop->stop(); }); $server=newServer(function(ServerRequestInterface$request){ returnnewResponse( 200, array( 'Content-Type'=>'text/plain' ), "HelloWorld1!\n" ); }); $socket=new\React\Socket\Server(8080,$loop); $server->listen($socket); $loop->run(); **/ //高性能HTTP服务器 $http=new\Swoole\Http\Server("127.0.0.1",9501); $http->on("start",function($server){ echo"Swoolehttpserverisstartedathttp://127.0.0.1:9501\n"; }); $http->on("request",function($request,$response){ $response->header("Content-Type","text/plain"); $response->end("HelloWorld1\n"); }); $http->start(); } }
个人觉得这里最优雅的实现方式应该是用GOTO了。
到此这篇关于php使用goto实现自动重启swoole、reactphp、workerman服务的代码的文章就介绍到这了,更多相关php自动重启swoole、reactphp、workerman服务内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。