這里以Zphp框架作為演示,實現(xiàn)swoole的代碼熱更新,在WorkerStart回調(diào)函數(shù)中,載入ZPHP框架:
use ZPHPZPHP; $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進(jìn)行http請求:
這是因為加載ZPHP框架后,訪問了默認(rèn)的控制器下的默認(rèn)方法,其中一行代碼為:
$data = $project."zchat runing in swoole!!!!n";
現(xiàn)在修改此行代碼如下:
$data = $project."The code is modified!!!!n";
在linux中查看http_server的進(jìn)程
ps axuf|grep http_server
使用以下命令向manager進(jìn)程發(fā)送一個信號來重載worker進(jìn)程:
kill -USR1 5913
可見4個worker進(jìn)程的進(jìn)程編號都和之前不同了,這說明manager進(jìn)程已經(jīng)重載了worker進(jìn)程
刷新瀏覽器中的頁面可見
熱更新成功~
這里小小總結(jié)一下:
代碼熱更新其實更新的是"WorkerStart"回調(diào)函數(shù)里的內(nèi)容,也就是說我們的業(yè)務(wù)代碼都要放到"WorkerStart"回調(diào)函數(shù)中。
以上就是php代碼怎么熱更新的詳細(xì)內(nèi)容,希望對你有所幫助。