Я работаю над 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 открывается и показывает сообщение.
Как мне это сделать? Любая помощь будет высоко оценен.
Вы можете использовать планировщик заданий для 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.
ПРИМЕЧАНИЕ: вы можете выбрать запуск cronjob, если пользователь вошел в систему или нет, по умолчанию он запускается, только если пользователь вошел в систему, вы можете изменить эту опцию.
То есть теперь вы можете либо запустить задачу вручную, щелкнув правой кнопкой мыши и выбрав команду run, и она запустится controller/action
указано в my-cronjob.bat
или дождитесь его срабатывания в указанное время.
Приведенные выше настройки откроют командную строку и запустят задачу, если вы хотите, чтобы планировщик запускал задачу в свернутом виде, вы должны увидеть это link
и обновите параметры задачи соответственно. также вы можете изменить последнюю строку pause
в Exit
тоже.
Я проверил его, прежде чем публиковать ответ здесь, как я Windows10
ОС у меня дома, поэтому не смог опубликовать ответ без тестирования из офиса.
Мне кажется, что вы ищете cronjob.
Вам нужно будет создать консольный cronjob, а затем добавить его в ваш crontab на сервере. Приведенная выше ссылка содержит вики о том, как настроить это для Yii2.
Пример crontab, который будет запускаться каждый день в 3 часа дня:
0 15 * * * /var/www/project/yii daemon/create