欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php中Swoole的熱更新實(shí)現(xiàn)代碼實(shí)例

 更新時(shí)間:2021年03月04日 12:00:09   作者:weixin_34209851  
這篇文章主要介紹了php中SWOOLE的熱更新實(shí)現(xiàn)代碼實(shí)例,熱更新是比較常用的技術(shù),有需要同學(xué)可以研究下

使用swoole_http_server替代php-fpm后,由于php長駐內(nèi)存,修改了代碼不能實(shí)時(shí)調(diào)試,需要去手動(dòng)去重啟服務(wù),很是不方便,決定使用inotify來監(jiān)控文件狀態(tài)的改變,來給swoole發(fā)送reload信號(hào),來實(shí)現(xiàn)swoole的熱更新。

如何安裝inotify就不寫了,安裝之后可以建立一個(gè)腳本文件,如php_reload.sh:

#!/bin/sh
# src 需要監(jiān)控的地址
src=/home/server/Project/test/app/
/usr/bin/inotifywait -rmq -e create,modify,delete $src | while read event
 do
    /home/server/Project/test/bin/httpserver reload
 done

linux shell 寫swoole重啟腳本

代碼如下

#!/bin/sh
kill `lsof -t -i:9501`
sleep 2
php /data/web/mircoweb/wwwroot/Public/swoole.php
sleep 1
netstat -ntlp

如果不支持lsof命令 那就yum install lsof安裝下吧

swoole服務(wù)平滑重啟

1. reload.sh腳本

echo "loading..."
pid="pidof live_name"
echo $pid
kill -USR1 $pid
echo "loading success"

2. linux中執(zhí)行

sh  reload.sh
代碼用的原來只是自己加了一些操作流程

swoole_reload_server.php

<?php
class Server
{
        private $serv;
        public function __construct() {
        $this->serv = new swoole_server("0.0.0.0", 9501);
        $this->serv->set(array(
            'worker_num' => 8,
            'daemonize' => false,
            'max_request' => 10000,
            'dispatch_mode' => 2,
            'debug_mode'=> 1,
        ));
        $this->serv->on('Start', array($this, 'onStart'));
        $this->serv->on('WorkerStart', array($this, 'onWorkerStart'));
        $this->serv->on('Connect', array($this, 'onConnect'));
        $this->serv->on('Receive', array($this, 'onReceive'));
        $this->serv->on('Close', array($this, 'onClose'));
        $this->serv->start();
    }
    public function onStart( $serv ) {
        echo "Start\n";
        cli_set_process_title("reload_master");
    }
    public function onWorkerStart( $serv , $worker_id) {
        require_once "reload_page.php";
        Test();
    }
    public function onConnect( $serv, $fd, $from_id ) {
        echo "Client {$fd} connect\n";
 
    }
    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
        echo "Get Message From Client {$fd}:{$data}\n";
    }
    public function onClose( $serv, $fd, $from_id ) {
        echo "Client {$fd} close connection\n";
    }
}
new Server();

reload.sh

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

reload_page.php 

<?php
/**
 * If you change this function and want
 * swoole_server to use the new function,
 * just run 'reload.sh' to send a restart
 * signal to swoole_server.
 */
function Test() {
  echo "This is not a php file\n";
}

到此這篇關(guān)于php中SWOOLE的熱更新實(shí)現(xiàn)代碼實(shí)例的文章就介紹到這了,更多相關(guān)php中SWOOLE的熱更新實(shí)現(xiàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論