Closed lwhdev closed 1 year ago
+--------------------------+---------+ | PHP | 7.3.21 | | Swoole | 4.8.1 | | LaravelS | - | | Laravel Framework [test] | 7.30.6 | 我这里发现使用了 php bin/laravels stop 只能干掉worker进程, 然后里面的自定义进程一直卡在那里,导致laravels主进程停止不了,不知道为什么,是否需要手动释放自定义的process , 但是timer 却可以自动释放 我的自定义进程代码如下
class TestProcess implements CustomProcessInterface { /** * @var bool 退出标记,用于Reload更新 */ private static $quit = false; public static function callback(Server $swoole, Process $process) { while ($data = $process->read()) { $process->write('TestProcess: ' . $data); //响应 $count = 1; while ($count<=1000){ $count++; DB::disconnect(); // 关闭数据库连接 Redis::connection()->close(); } \Log::info(__METHOD__, ['close mysql and redis: read data: ',$data,$count,time()]) ; } } // 要求:LaravelS >= v3.4.0 并且 callback() 必须是异步非阻塞程序。 public static function onReload(Server $swoole, Process $process) { \Log::info('Test process: reloading'); self::$quit = true; // $process->exit(0); // 强制退出进程 } // 要求:LaravelS >= v3.7.4 并且 callback() 必须是异步非阻塞程序。 public static function onStop(Server $swoole, Process $process) { \Log::info('Test process: stopping'); self::$quit = true; } }
,是不是自定进程一直运行,停止不了,请大佬指教@hhxsv5
要把self::$quit用在callback()的循环判断里面,不然一直循环啊
大意了.谢谢大佬
+--------------------------+---------+ | PHP | 7.3.21 | | Swoole | 4.8.1 | | LaravelS | - | | Laravel Framework [test] | 7.30.6 | 我这里发现使用了 php bin/laravels stop 只能干掉worker进程, 然后里面的自定义进程一直卡在那里,导致laravels主进程停止不了,不知道为什么,是否需要手动释放自定义的process , 但是timer 却可以自动释放 我的自定义进程代码如下
,是不是自定进程一直运行,停止不了,请大佬指教@hhxsv5