The ZPHP framework is used as a demonstration here. To implement hot update of swoole code, in the WorkerStart callback function, load the ZPHP framework: (Recommended learning: PHP video tutorial)
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();
The file name is http_server.php
Run this script in the background:
php http_server.php &
Enter 192.168.1.116:9501 in the browser for http Request:
This is because after loading the ZPHP framework, the default method under the default controller is accessed. One line of code is:
$data = $project."zchat runing in swoole!!!!\n";
Now modify this line of code as follows:
$data = $project."The code is modified!!!!\n";
View the process of http_server in Linux
ps axuf|grep http_server
Use the following command to send a signal to the manager process to reload the worker process:
kill -USR1 5913
It can be seen that the process numbers of the four worker processes are the same as before It’s different, which means that the manager process has overloaded the worker process
Refresh the page in the browser to see
Hot update is successful~
Here is a small summary:
Code hot update actually updates the content in the "WorkerStart" callback function, which means that our business code must be placed in the "WorkerStart" callback function.
The above is the detailed content of How to hot update php code. For more information, please follow other related articles on the PHP Chinese website!