del

  1. boolean \Workerman\Lib\Timer::del(int $timer_id)

删除某个定时器

参数

timer_id

定时器的id,即add接口返回的整型

返回值

boolean

示例

  1. use \Workerman\Worker;
  2. use \Workerman\Lib\Timer;
  3. require_once __DIR__ . '/Workerman/Autoloader.php';
  4. $task = new Worker();
  5. // 开启多少个进程运行定时任务,注意多进程并发问题
  6. $task->count = 1;
  7. $task->onWorkerStart = function($task)
  8. {
  9. // 每2秒运行一次
  10. $timer_id = Timer::add(2, function()
  11. {
  12. echo "task run\n";
  13. });
  14. // 20秒后运行一个一次性任务,删除2秒一次的定时任务
  15. Timer::add(20, function($timer_id)
  16. {
  17. Timer::del($timer_id);
  18. }, array($timer_id), false);
  19. };
  20. // 运行worker
  21. Worker::runAll();

实例(定时器回调中删除当前定时器)

  1. use \Workerman\Worker;
  2. use \Workerman\Lib\Timer;
  3. require_once __DIR__ . '/Workerman/Autoloader.php';
  4. $task = new Worker();
  5. $task->onWorkerStart = function($task)
  6. {
  7. // 注意,回调里面使用当前定时器id必须使用引用(&)的方式引入
  8. $timer_id = Timer::add(1, function()use(&$timer_id)
  9. {
  10. static $i = 0;
  11. echo $i++."\n";
  12. // 运行10次后删除定时器
  13. if($i === 10)
  14. {
  15. Timer::del($timer_id);
  16. }
  17. });
  18. };
  19. // 运行worker
  20. Worker::runAll();