Hi walkor, 请问为什么静态变量$seconds 放到定时器中声明时,进程中$seconds的值是不共享的? 我每次发一个请求时,$seconds的初始值都是0。 如果我直接在onMessage里面声明$seconds = 0时,$seconds是共享的。如下:
$timer_id = Timer::add(1,
function () use( &$timer_id)
{
static $seconds = 0;
$seconds ++;
if ($seconds == 10) {
var_dump('static:'.$seconds.PHP_EOL);
Timer::del($timer_id);
}
});
你这个代码每次创建定时器都创建了一个匿名函数,每个匿名函数是独立的,所以不会共享。
把函数独立出来共用就好了。
好的,谢谢walkor抽空解答