在安装php event扩展,使用time定时器采用类方法调用会有bug,无法传递参数。

learner

问题描述

不支持 定时器,这样调用。结束内存超出的进程失败。
Timer::add(60, [$this, 'checkMemory'], [$memoryLimit]);

程序代码或配置

    public function repeat(float $interval, callable $func, array $args = []): int
    {
        $className = $this->eventClassName;
        $timerId = $this->timerId++;
        $event = new $className($this->eventBase, -1, $className::TIMEOUT | $className::PERSIST, $func);
        if (!$event->addTimer($interval)) {
            throw new \RuntimeException("Event::addTimer($interval) failed");
        }
        $this->eventTimer[$timerId] = $event;
        return $timerId;
    }

不支持

重现问题的步骤

Timer::add(60, [$this, 'checkMemory'], [$memoryLimit]);

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

webman v1.6.14 / workerman v5.0.0
linux php 安装 php8.3 event扩展

46 0 0
0个回答

×
🔝