Пример #1
0
 /**
  * 任务调度
  *
  * @param   string      $no     任务编号
  * @param   \Closure    $fun    任务函数(闭包)
  * @return  Time
  */
 public static function call(string $no, $fun)
 {
     if (!is_callable($fun)) {
         throw new \InvalidArgumentException("定时任务定义错误:call方法接收的fun不是有效函数");
     }
     $redis_key = Base::getRedisKey($no);
     $taskInfo = Base::getTaskInfo($redis_key);
     $run_time = $taskInfo == '' ? 0 : $taskInfo['run_time'];
     $status = new Status();
     if (empty($taskInfo)) {
         $status->newTask();
         goto goto_return;
     }
     if ($taskInfo['is_running']) {
         $status->running();
         goto goto_return;
     }
     if (time() >= $run_time) {
         Base::addHandleTaskFun($redis_key, $fun);
         $status->execTask();
         goto goto_return;
     }
     goto_return:
     return new Time($redis_key, $status->status(), $run_time);
 }
Пример #2
0
 /**
  * 开始刷新任务
  *
  * @param   \Phalcon\DI\FactoryDefault  $di     Phalcon的DI类
  */
 private function handleTaskRefresh(&$di)
 {
     $router = new \Phalcon\Mvc\Router();
     $router->setDefaults(["namespace" => 'App\\Task', "controller" => 'Task', "action" => 'kernel']);
     $di->set('router', $router);
     $di->set('url', function () {
         $url = new \Phalcon\Mvc\Url();
         $url->setBaseUri(QP_ROOT_PATH);
         return $url;
     });
     $di->set('view', function () {
         $view = new \Phalcon\Mvc\View();
         $view->setViewsDir(QP_VIEW_PATH);
         return $view;
     });
     Task\BaseTask::flushTask();
     Task\BaseTask::initData();
     (new \Phalcon\Mvc\Application($di))->handle();
     Task\BaseTask::handleTaskRefresh();
 }