@gigabits

Как автоматизировать выполнение скрипта в Yii?

Доброго времени суток.
Есть контроллер который выполняет определенную функцию. Есть нужда автоматизировать данный процесс, скажем ежедневно в 00:00 должно выполнятся данное действие.
Сам скрипт должен импортировать данные из xml файлов для обновления базы данных новой информацией. Процесс импорта не быстрый и занимает около часа. Для снятия нагрузки с сервера импорт выполняется по фрагментам, постоянно в браузер приходят данные и отправляется обратно ajax запрос на дальнейшее выполнение. Как автоматизировать процес в данном случае чтоб шел процесс также по этап-но.
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 3
coderisimo
@coderisimo
Консольные команды можно вызывать КРОНОМ. Отсюда - составляете расписание крона, который в нужный момент запускает выполнение определенных "консолек" (www.yiiframework.com/doc-2.0/guide-tutorial-consol... .

Можно сделать задачи более гибкими. Тогда при запуске скрипт проверяет есть ли текущие задачи (хранить их можно например в БД), и если "есть чо" выполняет. Выполнил- пометил , как выполненную.
Ответ написан
Комментировать
mitaichik
@mitaichik
Как сказали выше - юзай консольные комманды. Для минимизации потребления памяти используй стриминговые хмл парсеры, для минимизаци нагрузки на бд юзай батч или пакетные вставки, обновления. Чтоб дать другим время - можеш слип вставить, но это всефигня, в многопроцессорных и многоядерных системах врядли один php процесс повесит систему так что жругие остановяться. Можно процесс занайсить.

Для запуска - крон. Так же есть короно-подобное решение для yii, увы не помню как называется, мы его юзаем - нареканий нет.
Ответ написан
В Yii 2 есть для этого консольные команды, для Yii 1 не могу знать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы