国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于static的變量內(nèi)存常駐

xiewen_kevin

Hi walkor,? 請問為什么靜態(tài)變量$seconds 放到定時器中聲明時,進(jìn)程中$seconds的值是不共享的? 我每次發(fā)一個請求時,$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);
? ? ? ? ? ? ? ? }
});
4691 1 1
1個回答

walkor 打賞

你這個代碼每次創(chuàng)建定時器都創(chuàng)建了一個匿名函數(shù),每個匿名函數(shù)是獨立的,所以不會共享。
?
把函數(shù)獨立出來共用就好了。

$timer_id = Timer::add(1, 'my_func', );
function? my_func($timer_id)?
? {
? ? ? ? static $seconds = 0;
? ? ? ? ?$seconds ++;
? ??
? ? ? ? if ($seconds == 10) {
? ? ?
? ? ? ? ? ? ? var_dump('static:'.$seconds.PHP_EOL);
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?Timer::del($timer_id);
? ? ? ?}
}
年代過于久遠(yuǎn),無法發(fā)表回答
??