| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
8年前发布

swoole支持热启动

所谓热重启,就是当服务器相关代码有所变动之后,无需停止服务,而是在服务器仍然运行的状态下更新文件。Swoole通过内置的reload函数以及两个自定义信号量实现了这一功能。 首先我讲解一下Swoole可用的三个信号:SIGTERM,SIGUSR1,SIGUSR2。SIGTERM用于停止服务器,SIGUSR1用于重启全部的Worker进程,SIGUSR2用于重启全部的Task Worker进程。 那要如何实现热更新代码文件呢?Swoole的回调函数中有这个一个回调 onWorkerStart ;该回调会在Worker进程启动时被调用。因此,当swoole_server收到SIGUSR1信号并重启全部Worker进程后,onWorkerStart就会被调用。如果在onWorkerStart中require全部的代码文件,每次onWorkerStart后都会重新require一次php文件,这样就能实现代码文件的热更新。 来看下代码实现:

public function onStart( $serv ) {      cli_set_process_title("reload_master");  }    public function onWorkerStart( $serv , $worker_id) {      require_once "reload_page.php";      Test(); // reload_page.php中定义的一个函数  }

首先,在 onStart 回调函数中通过php的cli_set_process_title函数设置进程名。 在 onWorkerStart 中,require相关的php文件。 然后,新建一个reload.sh文件,输入如下内容:

echo "Reloading..."  cmd=$(pidof reload_master)    kill -USR1 "$cmd"  echo "Reloaded"

这样,就可以通过执行这个脚本重启服务器了。 点此查看完整源码

来自: http://blog.41ms.com/post/52.html

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1451954236198.html
Swoole PHP开发