mult1mate\crontab\TaskRunner::runTask PHP Method

runTask() public static method

Runs task and returns output
public static runTask ( mult1mate\crontab\TaskInterface $task ) : string
$task mult1mate\crontab\TaskInterface
return string
    public static function runTask($task)
    {
        $run = $task->createTaskRun();
        $run->setTaskId($task->getTaskId());
        $run->setTs(date('Y-m-d H:i:s'));
        $run->setStatus(TaskRunInterface::RUN_STATUS_STARTED);
        $run->saveTaskRun();
        $run_final_status = TaskRunInterface::RUN_STATUS_COMPLETED;
        ob_start();
        $time_begin = microtime(true);
        $result = self::parseAndRunCommand($task->getCommand());
        if (!$result) {
            $run_final_status = TaskRunInterface::RUN_STATUS_ERROR;
        }
        $output = ob_get_clean();
        $run->setOutput($output);
        $time_end = microtime(true);
        $time = round($time_end - $time_begin, 2);
        $run->setExecutionTime($time);
        $run->setStatus($run_final_status);
        $run->saveTaskRun();
        return $output;
    }

Usage Example

 public function runTask()
 {
     if (isset($_POST['task_id'])) {
         $tasks = !is_array($_POST['task_id']) ? array($_POST['task_id']) : $_POST['task_id'];
         foreach ($tasks as $t) {
             $task = Task::findByPk($t);
             /**
              * @var Task $task
              */
             $output = TaskRunner::runTask($task);
             echo $output . '<hr>';
         }
     } elseif (isset($_POST['custom_task'])) {
         $result = TaskRunner::parseAndRunCommand($_POST['custom_task']);
         echo $result ? 'success' : 'failed';
     } else {
         echo 'empty task id';
     }
 }