首頁 >後端開發 >PHP問題 >php程式碼怎麼熱更新

php程式碼怎麼熱更新

(*-*)浩
(*-*)浩原創
2019-10-11 10:47:463759瀏覽

php程式碼怎麼熱更新

這裡以ZPHP框架作為演示,實現swoole的程式碼熱更新,在WorkerStart回呼函數中,載入ZPHP框架: (推薦學習: PHP影片教學

use ZPHP\ZPHP;
$zphp = null;
$mimes = null;
$http = new swoole_http_server('0.0.0.0',9501);
$http->on('request', function (swoole_http_request $request, swoole_http_response $response){
	//......
});
 
$http->on('WorkerStart',function($serv, $worker_id){
    //框架载入
    require __DIR__ . DIRECTORY_SEPARATOR . 'zphp' . DIRECTORY_SEPARATOR . 'ZPHP' . DIRECTORY_SEPARATOR . 'ZPHP.php';
    global $zphp;
    $zphp = ZPHP::run(__DIR__, false, 'default');
    global $mimes;
    $mimes = require "mimes.php";
});
 
$http->start();

檔案名稱為http_server.php

在背景執行此腳本:

php http_server.php &

在瀏覽器輸入192.168.1.116:9501進行http請求:

這是因為載入ZPHP框架後,存取了預設的控制器下的預設方法,其中一行程式碼為:

$data = $project."zchat runing in swoole!!!!\n";

現在修改此行程式碼如下:

$data = $project."The code is modified!!!!\n";

在Linux中查看http_server的進程

ps axuf|grep http_server

使用以下命令向manager進程發送一個信號來重載worker進程:

kill -USR1 5913

可見4個worker進程的進程編號都和之前不同了,這說明manager進程已經重載了worker進程

刷新瀏覽器中的頁面可見

#熱更新成功~

這裡小小總結一下:

程式碼熱更新其實更新的是"WorkerStart"回呼函數裡的內容,也就是說我們的業務程式碼都要放到"WorkerStart"回呼函數中。

以上是php程式碼怎麼熱更新的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn