Yii2 — запустить консольное приложение на окнах с помощью планировщика

Я работаю над yii2, У меня есть функция создания, которую я хочу запускать в фоновом режиме через каждые 24 часа.

 public function actionCreate()
{
$model = new MeterPing();

// CURL code to get results from web-api

if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}

Также в этой функции я буду получать некоторые записи из web-API, Но моя главная задача — запускать вышеуказанную функцию в фоновом режиме через каждые 24 часа.

Обновление 1

В соответствии с предложением я создал контроллер в console\controller

namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller {

public function actionIndex() {
echo "cron service runnning";
}}

Теперь для тестирования я следовал этому ссылка на сайт и создал сервис запуска, используя cmd со следующими параметрами

введите описание изображения здесь

Теперь, следуя предложенному, я попробовал каждый шаг. .bat файл содержит

@Echo off
title My Cron Job
:: See title at the top
php E:\xampp\htdocs\inventory-web\yii test
pause

После сохранения файла и добавления его в планировщик задач. Я пытался запустить его из этого интерфейса. И я увидел, что cmd открывается и показывает сообщение.

Как мне это сделать? Любая помощь будет высоко оценен.

1

Решение

Вы можете использовать планировщик заданий для Windows

  • Создать .bat файл, который должен содержать команду для запуска вашего консольного приложения Yii controller/action если вы создаете класс контроллера TestController это расширяет yii\console\controller и добавить create действие, чтобы запустить это действие из консольного приложения Yii, введите ./yii test/create в корне проекта, используя gitBash или консоль, поэтому мы добавим эту команду в .bat файл, указав полный путь к project_root/yii который является файлом начальной загрузки консоли Yii. Это главное, чтобы запустить задание как часть кода действия контроллера Yii.

откройте блокнот и скопируйте в него код, сохраненный как .bat с именем my-cronjob.bat

@Echo off
title My Cron Job
:: See title at the top
php F:\xampp\htdocs\my-project\yii test/create
pause

ПРИМЕЧАНИЕ: убедитесь, что у вас есть php в Windows Path Variable или вы должны предоставить полный путь к php.exe в выше .bat файл

  • Теперь выполните следующие действия для создания планировщика задач.

  • Type in Task Scheduler in the start menu and open it.

  • Create basic Task

введите описание изображения здесь

  • Write name for the task

введите описание изображения здесь

  • Select Trigger time Ежедневно

введите описание изображения здесь

  • Select time to execute the task

введите описание изображения здесь

  • SelectдействиеStart a programme

введите описание изображения здесь

  • Now select theмой-cronjob.batfile and press Next and Finish

введите описание изображения здесь

  • Now go to task manager and selectБиблиотека планировщика заданийand right click the cronjob you just created and open properties.

введите описание изображения здесь

  • Выбрать Run with highest privileges
    введите описание изображения здесь

ПРИМЕЧАНИЕ: вы можете выбрать запуск cronjob, если пользователь вошел в систему или нет, по умолчанию он запускается, только если пользователь вошел в систему, вы можете изменить эту опцию.

То есть теперь вы можете либо запустить задачу вручную, щелкнув правой кнопкой мыши и выбрав команду run, и она запустится controller/action указано в my-cronjob.bat или дождитесь его срабатывания в указанное время.

Приведенные выше настройки откроют командную строку и запустят задачу, если вы хотите, чтобы планировщик запускал задачу в свернутом виде, вы должны увидеть это link и обновите параметры задачи соответственно. также вы можете изменить последнюю строку pause в Exit тоже.

Я проверил его, прежде чем публиковать ответ здесь, как я Windows10 ОС у меня дома, поэтому не смог опубликовать ответ без тестирования из офиса.

3

Другие решения

Мне кажется, что вы ищете cronjob.

Вам нужно будет создать консольный cronjob, а затем добавить его в ваш crontab на сервере. Приведенная выше ссылка содержит вики о том, как настроить это для Yii2.

Пример crontab, который будет запускаться каждый день в 3 часа дня:

0 15 * * * /var/www/project/yii daemon/create
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector