Open
Description
-
Your software version (Screenshot of your startup)
Software Version PHP 8.0.26 Swoole 5.1.0 LaravelS 3.7.35 Laravel Framework [production] 9.33.0 -
Detail description about this issue(error/log)
Error1:
PHP Fatal error: Uncaught ErrorException: Swoole\Server::start(): Swoole\WebSocket\Server->onClose handler error in /www/wwwroot/app.com/vendor/hhxsv5/laravel-s/src/Swoole/Server.php:413
Stack trace:
#0 /www/wwwroot/app.com/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /www/wwwroot/app.com/vendor/hhxsv5/laravel-s/src/Swoole/Server.php(413): Swoole\Server->start()
#3 /www/wwwroot/app.com/vendor/hhxsv5/laravel-s/src/Console/Portal.php(158): Hhxsv5\LaravelS\Swoole\Server->run()
#4 /www/wwwroot/app.com/vendor/hhxsv5/laravel-s/src/Console/Portal.php(59): Hhxsv5\LaravelS\Console\Portal->start()
#5 /www/wwwroot/app.com/vendor/symfony/console/Command/Command.php(291): Hhxsv5\LaravelS\Console\Portal->execute()
#6 /www/wwwroot/app.com/bin/laravels(167): Symfony\Component\Console\Command\Command->run()
#7 {main}
thrown in /www/wwwroot/app.com/vendor/hhxsv5/laravel-s/src/Swoole/Server.php on line 413
Error2:
PHP Fatal error: Uncaught ErrorException: Swoole\Server::start(): Swoole\Http\Server->onRequest handler error in /www/wwwroot/app.mori-building.com/vendor/hhxsv5/laravel-s/src/Swoole/Server.php:413
Stack trace:
#0 /www/wwwroot/app.mori-building.com/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(259): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()
#2 /www/wwwroot/app.mori-building.com/vendor/hhxsv5/laravel-s/src/Swoole/Server.php(413): Swoole\Server->start()
#3 /www/wwwroot/app.mori-building.com/vendor/hhxsv5/laravel-s/src/Console/Portal.php(158): Hhxsv5\LaravelS\Swoole\Server->run()
#4 /www/wwwroot/app.mori-building.com/vendor/hhxsv5/laravel-s/src/Console/Portal.php(59): Hhxsv5\LaravelS\Console\Portal->start()
#5 /www/wwwroot/app.mori-building.com/vendor/symfony/console/Command/Command.php(291): Hhxsv5\LaravelS\Console\Portal->execute()
#6 /www/wwwroot/app.mori-building.com/bin/laravels(167): Symfony\Component\Console\Command\Command->run()
#7 {main}
thrown in /www/wwwroot/app.mori-building.com/vendor/hhxsv5/laravel-s/src/Swoole/Server.php on line 413
- Some
reproducible
code blocks andsteps
在使用supervisord守护运行swoole的时候,错误日志中出现了以上两个错误,经过排查后,也没找出来什么问题,
WorkerStopEvent和WorkerErrorEvent中也只加了事务回滚,如下:
WorkerErrorEvent:
public function handle(Server $server, $workerId, $workerPId, $exitCode, $signal)
{
try {
// 回滚事务
DB::rollBack();
} catch (Throwable $e) {
echo sprintf('[%s] [%s] %s', date('Y-m-d H:i:s'), 'error', 'WorkerErrorEvent:工作进程报错,workerId:' . $workerId . ',事务回滚失败:' . $e->getMessage() . ',workerPId:' . $workerPId);
}
echo sprintf('[%s] [%s] %s', date('Y-m-d H:i:s'), 'error', 'WorkerErrorEvent:工作进程出错,workerId:' . $workerId . ',workerPId:' . $workerPId . ',退出码:' . $exitCode . ',信号:' . $signal);
}
WorkerStopEvent:
public function handle(Server $server, $workerId)
{
logger()->driver('swoole')->info('WorkerStopEvent:工作进程停止,workerId:' . $workerId);
echo sprintf('[%s] [%s] %s', date('Y-m-d H:i:s'), 'info', 'WorkerStopEvent:工作进程停止,workerId:' . $workerId);
try {
// 统一事务回滚,防止有未提交的事务
DB::rollBack();
logger()->driver('swoole')->info('WorkerStopEvent:事务回滚,workerId:' . $workerId);
} catch (Throwable $e) {
logger()->driver('swoole')->error('WorkerStopEvent:事务回滚失败:' . $e->getMessage() . ',workerId:' . $workerId);
echo sprintf('[%s] [%s] %s', date('Y-m-d H:i:s'), 'error', 'WorkerErrorEvent:工作进程停止,workerId:' . $workerId . ',事务回滚失败:' . $e->getMessage());
}
echo sprintf('[%s] [%s] %s', date('Y-m-d H:i:s'), 'info', 'WorkerStopEvent:事务回滚,workerId:' . $workerId);
}
希望有大佬能指点迷津🙏