有个bug一年了一直没修复:Worker::stopAll();无法自动重启子进程

dignfei

问题描述

php8.0.30中,无法

程序代码或配置

        $task_worker = new Worker();

        $task_worker->onWorkerStart = function(){
            global $task_worker,$sec;
            echo '开始1^^^^^^';
            sleep(2);
            Worker::stopAll();
            echo '结束3^^^^^^';

        };

        Worker::runAll();

重现问题的步骤

直接运行代码

操作系统环境及workerman/webman等具体版本

截图

308 3 0
3个回答

dignfei

linux docker php容器环境下

如果自动重启子进程,echo '开始1^^^^^^'应该一直执行很多次,但是运行后这里只会执行一次

  • 暂无评论
walkor 打赏

dockerfile 发下

  • dignfei 9天前

    就这个镜像应该就可以 docker pull php:8.0.30-fpm-bullseye

docker里测试没问题
截图

本地测试也没发现问题

代码

<?php

use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$task_worker = new Worker();

$task_worker->onWorkerStart = function(){
    global $task_worker,$sec;
    echo '开始1^^^^^^';
    sleep(2);
    Worker::stopAll();
    echo '结束3^^^^^^';

};

Worker::runAll();
  • dignfei 9天前

    我测一下,复现一下

  • dignfei 9天前

    试了,因为swoole扩展,导致这个问题,禁用swoole扩展就能用了

×
🔝