创建定时器 $_SESSION['timer'+变量] = Timer::add(1, function(){}); 销毁定时器 Timer::del($_SESSION['timer'+变量]); 请问多进程会不会出现timer1定时器在A进程,B进程无法清除报错,或者timer1定时器在C进程,D进程无法清除
会
那这个要怎么解决呢,指定一个进程运行么
每个进程只创建一个定时器,这个定时器定时处理当前进程的所有数据
可能我没描述清楚,代码如下,这个会存在多进程无法清除定时器的问题么 public static function onMessage($client_id, $message) { // 客户端传递的是json数据 $message_data = json_decode($message, true); if(!$message_data) { return ; } // 根据类型执行不同的业务 switch($message_data['type']) { case 'login': $_SESSION['timer'+变量] = Timer::add(1, function(){}); return; case 'logout' Timer::del($_SESSION['timer'+变量]); return; }
gateway默认的路由应该是将同一个客户端的请求都转发到同一个业务进程,所以都是在同一个进程操作的定时器,应该没问题
会
那这个要怎么解决呢,指定一个进程运行么
每个进程只创建一个定时器,这个定时器定时处理当前进程的所有数据
可能我没描述清楚,代码如下,这个会存在多进程无法清除定时器的问题么
public static function onMessage($client_id, $message)
{
// 客户端传递的是json数据
$message_data = json_decode($message, true);
if(!$message_data)
{
return ;
}
// 根据类型执行不同的业务
switch($message_data['type'])
{
case 'login':
$_SESSION['timer'+变量] = Timer::add(1, function(){});
return;
case 'logout'
Timer::del($_SESSION['timer'+变量]);
return;
}
gateway默认的路由应该是将同一个客户端的请求都转发到同一个业务进程,所以都是在同一个进程操作的定时器,应该没问题