本文基于tp5.1实现:tp5+服务器crontab

一、新建定时任务

  1. 在application下新建crontab文件夹;
  2. 在crontab文件夹下新建command文件夹;
  3. 在command文件夹中新建Task.php控制器
    1. <?php
    2. namespace app\crontab\command;
    3. use app\index\model\User;
    4. use think\console\Command;
    5. use think\console\Input;
    6. use think\console\Output;
    7. class Task extends Command
    8. {
    9. protected function configure()
    10. {
    11. $this->setName('task')->setDescription('定时计划:每天0点通知用户');
    12. }
    13. /**
    14. * 任务实现功能:定时更新通知时间
    15. * @param Input $input
    16. * @param Output $output
    17. * @return int|null|void
    18. * @throws \Exception
    19. */
    20. protected function execute(Input $input, Output $output)
    21. {
    22. $userData = User::select();
    23. $jobData=[];
    24. foreach ($userData as $v) {
    25. $jobData[] = ['id' => $v['id'],'notify_time' => time()];
    26. }
    27. $model=new User();
    28. $model->saveAll($jobData);
    29. }
    30. }

    二、配置任务

    application/command.php中配置
    1. return [
    2. 'app\crontab\command\Task', //定时通知用户
    3. ];

    三、linux服务器添加任务脚本

1、crontab -e //编辑新增

  1. 0 0 * * * /usr/bin/php /www/wwwroot/tp5demo.com/think task>>/www/wwwroot/tp5demo.com/runtime/20201127.log 2>&1

该脚本表示每天0点0分执行task任务:
/usr/bin/php 为服务器PHP目录所在;
/www/wwwroot/tp5demo.com/think 表示task任务所在的项目目录;>>/www/wwwroot/tp5demo.com/runtime/20201127.log 2>&1 记录任务执行记录

2、crontab -l //计划任务列表 可查看部署成功的任务
3、linux crontab 任务一般存放在/var/spool/cronw文件夹中