這裡以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中文網其他相關文章!