定時(shí)器
GatewayWorker是基于Workerman開發(fā)的,Workerman定時(shí)器在GatewayWorker中也同樣支持,用法與Wokerman的定時(shí)器用法相同。參見Workerman手冊(cè)定時(shí)器
示例
use Workerman\Timer;
class Events
{
// 進(jìn)程啟動(dòng)時(shí)設(shè)置個(gè)定時(shí)器。Events中支持onWorkerStart需要Gateway版本>=2.0.4
public static function onWorkerStart()
{
Timer::add(10, function(){
echo "timer\n";
});
}
// 定時(shí)關(guān)閉未認(rèn)證的連接
public static function onConnect($client_id)
{
// 連接到來后,定時(shí)30秒關(guān)閉這個(gè)鏈接,需要30秒內(nèi)發(fā)認(rèn)證并刪除定時(shí)器阻止關(guān)閉連接的執(zhí)行
$_SESSION['auth_timer_id'] = Timer::add(30, function($client_id){
Gateway::closeClient($client_id);
}, array($client_id), false);
}
// 認(rèn)證的連接將定時(shí)器刪除
public static function onMessage($client_id, $msg)
{
$msg = json_decode($msg, true);
switch($msg['type'])
{
case 'login':
略...
// 認(rèn)證成功,刪除 30關(guān)閉連接定 的時(shí)器
Timer::del($_SESSION['auth_timer_id']);
break;
}
............略
}
}