定时任务在有些场合很实用,像淘宝的自动确认收货就必须放在服务端进行,这时workeran的定时任务就派上用场了,它可以支持毫秒,crontab的粒度是一分钟

需要注意的是因为定时任务一直在执行,业务逻辑里太耗时的需要使用异步操作,如用AsyncTcpConnection异步创建个tcp连接,把耗时操作放在这个连接里面处理

可以在Applications/Chat/目录按规范新建个文件如start_timer.php,这样在php start.php start -d时会自动执行

start_timer.php




[python]​view plain​​ ​​copy​


  1. <?php  
  2. use \Workerman\Worker;  
  3. use \Workerman\Lib\Timer;  
  4. require_once './Workerman/Autoloader.php';  
  5.   
  6. $task = new Worker();  
  7. // 开启多少个进程运行定时任务,注意多进程并发问题  
  8. $task->count = 1;  
  9. $task->onWorkerStart = function($task)  
  10. {  
  11.     // 每2.5秒执行一次 支持小数,可以精确到0.001,即精确到毫秒级别  
  12.     $time_interval = 2.5;  
  13.     Timer::add($time_interval, function()  
  14.     {  
  15.         echo "task run\n";  
  16.     });  
  17. };  
  18.   
  19. // 运行worker  
  20. Worker::runAll();