public function testDeferredHelper() { if (true === file_exists('/tmp/301')) { unlink('/tmp/301'); } $testTask = new ReportingTask(); $testTask->cliCommand('touch', ['/tmp/301']); $testTask->registerTask(); echo "Running queue with DeferredHelper\n"; DeferredHelper::runImmediateTask($testTask->model()->id); sleep(2); $this->assertTrue(file_exists('/tmp/301')); }
/** * Builds ReportingTask and places it into certain group. Also if group is not exists yet, it will be created * with necessary parameters, such as group_notifications=0. * * @param array $command * @param string $groupName * @return ReportingTask */ public static function buildTask($command, $groupName) { $groupConfig = ['email_notification' => 0, 'allow_parallel_run' => 0, 'group_notifications' => 0, 'run_last_command_only' => 0]; if (null === ($group = DeferredGroup::findOne(['name' => $groupName]))) { $group = new DeferredGroup(); $group->loadDefaultValues(); $group->setAttributes($groupConfig); $group->name = $groupName; $group->save(); } if ((int) $group->group_notifications !== 0) { // otherwise DeferredController 'deferred-queue-complete' event will not trigger // and we'll unable to write config $group->setAttributes($groupConfig); $group->save(array_keys($groupConfig)); } $task = new ReportingTask(); $task->model()->deferred_group_id = $group->id; $task->cliCommand(DeferredHelper::getPhpBinary(), $command); return $task; }