Cronexecute.php 1016 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace app\job;
  3. use app\model\system\Cron;
  4. use think\facade\Log;
  5. use think\queue\Job;
  6. /**
  7. * 事件通过队列异步调用
  8. * Class Eventasync
  9. * @package app\job
  10. */
  11. class Cronexecute
  12. {
  13. public function fire(Job $job, $data)
  14. {
  15. $job->delete();
  16. try {
  17. $res = event($data[ 'event' ], [ 'relate_id' => $data[ 'relate_id' ] ]);
  18. $data_log = [
  19. 'name' => $data[ 'name' ],
  20. 'event' => $data[ 'event' ],
  21. 'relate_id' => $data[ 'relate_id' ],
  22. 'message' => json_encode($res)
  23. ];
  24. Log::write("计划任务:{$data[ 'event' ]} relate_id: {$data[ 'relate_id' ]}执行结果:" . json_encode($res, JSON_UNESCAPED_UNICODE));
  25. $cron_model = new Cron();
  26. //定义最新的执行时间或错误
  27. $cron_model->addCronLog($data_log);
  28. } catch (\Exception $e) {
  29. Log::write($e->getMessage());
  30. $job->delete();
  31. }
  32. }
  33. }