平滑重启,更新业务代码疑问

TM

请问平滑重启即时我修改了业务代码后,在不需要加载vendor目录的新依赖情况下只需要
php start.php reload 进行重启即可吗?看了文档不是很理解只有放在on{...}回调中的文件平滑重启才生效这句话。

1311 1 1
1个回答

walkor

换种说法,Worker::runAll();执行后,动态载入的文件支持reload。Worker::runAll();执行前已经加载到内存的文件不支持reload。
例如下面这段代码不支持reload

$worker = new Worker('websocket://127.0.0.1:9090');
$worker->onMessage = function($con, $data) {
    $con->send('hello');
}
Worker::runAll();

下面这段代码app.php里的代码支持reload

$worker = new Worker('websocket://127.0.0.1:9090');
$worker->onWorkerStart = function() {
    require 'app.php';
    $worker->onMessage = 'app_message';
}
Worker::runAll();

app.php

<?php
function app_message($con, $data) {
    $con->send('hi');
}
  • TM 2022-12-03

    感谢回答,已弄明白,框架很好用,之前一直没发现php有这种高性能框架。希望作者一直更新😊

  • 大宝儿 2023-11-09

    tp下使用的composer 包 该怎么引用动态文件?以达到reload效果呢 望大佬回答

年代过于久远,无法发表回答
🔝