婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php中Swoole的熱更新實現代碼實例

php中Swoole的熱更新實現代碼實例

熱門標簽:福州人工外呼系統哪家強 釘釘打卡地圖標注 安裝電銷外呼系統 百度商鋪地圖標注 注冊400電話申請 地圖標注平臺怎么給錢注冊 常州地圖標注服務商 新河科技智能外呼系統怎么樣 衡水外呼系統平臺

使用swoole_http_server替代php-fpm后,由于php長駐內存,修改了代碼不能實時調試,需要去手動去重啟服務,很是不方便,決定使用inotify來監控文件狀態的改變,來給swoole發送reload信號,來實現swoole的熱更新。

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

#!/bin/sh
# src 需要監控的地址
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服務平滑重啟

1. reload.sh腳本

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

2. linux中執行

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";
}

到此這篇關于php中SWOOLE的熱更新實現代碼實例的文章就介紹到這了,更多相關php中SWOOLE的熱更新實現內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解PHP Swoole與TCP三次握手
  • Swoole擴展的6種模式深入詳解
  • swoole鎖的機制代碼實例講解
  • windows系統php環境安裝swoole具體步驟
  • linux系統虛擬主機開啟支持Swoole Loader擴展的方法
  • Swoole源碼中如何查詢Websocket的連接問題詳解
  • 在Windows系統上安裝Cygwin搭建Swoole測試環境的圖文教程
  • php使用goto實現自動重啟swoole、reactphp、workerman服務的代碼
  • Centos7安裝swoole擴展操作示例
  • 詳解Swoole TCP流數據邊界問題解決方案

標簽:鷹潭 遼陽 柳州 白城 克拉瑪依 唐山 鶴崗 六安

巨人網絡通訊聲明:本文標題《php中Swoole的熱更新實現代碼實例》,本文關鍵詞  php,中,Swoole,的,熱,更新,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php中Swoole的熱更新實現代碼實例》相關的同類信息!
  • 本頁收集關于php中Swoole的熱更新實現代碼實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 巴南区| 沂源县| 广安市| 汾阳市| 开阳县| 西昌市| 双城市| 比如县| 岳池县| 宿松县| 阿荣旗| 迁西县| 阜宁县| 兰考县| 泽州县| 稷山县| 临邑县| 乌兰察布市| 云南省| 客服| 子长县| 大竹县| 宜黄县| 耒阳市| 广西| 青岛市| 富民县| 台北市| 睢宁县| 新巴尔虎左旗| 蓬溪县| 枣阳市| 宜良县| 临澧县| 莱阳市| 柯坪县| 平顶山市| 明星| 卓尼县| 大丰市| 沐川县|