濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > php中Swoole的熱更新實(shí)現(xiàn)代碼實(shí)例

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

熱門標(biāo)簽:福州人工外呼系統(tǒng)哪家強(qiáng) 釘釘打卡地圖標(biāo)注 安裝電銷外呼系統(tǒng) 百度商鋪地圖標(biāo)注 注冊(cè)400電話申請(qǐng) 地圖標(biāo)注平臺(tái)怎么給錢注冊(cè) 常州地圖標(biāo)注服務(wù)商 新河科技智能外呼系統(tǒng)怎么樣 衡水外呼系統(tǒng)平臺(tái)

使用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)文章希望大家以后多多支持腳本之家!

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php中Swoole的熱更新實(shí)現(xiàn)代碼實(shí)例》,本文關(guān)鍵詞  php,中,Swoole,的,熱,更新,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php中Swoole的熱更新實(shí)現(xiàn)代碼實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于php中Swoole的熱更新實(shí)現(xiàn)代碼實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    钟山县| 胶南市| 涞水县| 宜州市| 聊城市| 阿城市| 长汀县| 北辰区| 来凤县| 东至县| 怀宁县| 精河县| 东平县| 永靖县| 济阳县| 铜川市| 交城县| 平潭县| 阳东县| 大渡口区| 湘阴县| 水富县| 奉节县| 和田县| 浦县| 天全县| 岑溪市| 正安县| 儋州市| 临颍县| 大连市| 东乡族自治县| 太仆寺旗| 满城县| 蒲江县| 赣榆县| 定日县| 孟村| 新泰市| 芦山县| 巴楚县|