1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- declare (strict_types=1);
- namespace app\command;
- use think\console\Command;
- use think\console\Input;
- use think\console\input\Argument;
- use think\console\input\Option;
- use think\console\Output;
- use think\facade\Db;
- use think\facade\Log;
- use app\common\api\XwCrontab;
- /**
- * 主要处理短信的命令行程序
- */
- class Solver extends Command {
- protected function configure() {
- // 指令配置
- $this->setName('solver')
- ->setDescription('the solver command');
- }
- protected function execute(Input $input, Output $output) {
- // 指令输出
- $lockFileName = "task_solver.lock";
- $lockFile = fopen($lockFileName, "a");
- if (flock($lockFile, LOCK_EX | LOCK_NB)) {//文件锁(独占)
- set_time_limit(0);
- $root = app()->getRootPath();
- $schedules = Db::table("new_schedule")->select();
- foreach ($schedules as $schedule) {
- //检查时间到了没
- if (XwCrontab::check(time(), $schedule["timeStr"]) && $schedule["state"] == 1) {
- exec("php {$root}think " . $schedule["action"]);
- }
- }
- flock($lockFile, LOCK_UN);
- } else {
- $output->writeln('每分钟执行一次,执行时间超过1分钟下个1分钟跳过等待再下1分钟');
- }
- }
- }
|