Урок №10. Консольные приложения. Миграции БД

План:

  1. Консольные приложения.
  2. Планировщик задач cron.
  3. Миграции БД.
  4. Практика: рассылка новостей по расписанию.

13:50 - выбирайте редактор nano (2)


10:35 - новые миграции в конце списка файлов. Сначала выполняются миграции, созданные раньше.



Домашнее задание:

1. Планировщик задач.

а) Написать скрипт, который получает текущее время (например, 2017-01-10 18:05:24) и записывает его c новой строки в конец файла /var/www/project/frontend/web/log.txt
Таким образом, каждый раз, когда вызывается данный скрипт, в файл log.txt будет записано время его вызова.

б) Настроить планировщик на повторение скрипта с частотой:

  • Каждую минуту
  • Каждый час
  • Раз в 5 минут
  • Раз в 10 минут

в) Оставить машину рабочей и проверить содержимое файла log.txt спустя некоторое время.

Подсказка: можно сделать вывод времени немного красивее используя встроенный компонент Yii::$app->formatter.

2. Миграции БД.

а) Написать миграцию для создания таблицы "сотрудник". В таблице будет храниться такая информация:

  • ФИО (помним про атомарность!)
  • Дата рождения
  • Город
  • Дата начала работы
  • Стаж работы
  • Должность
  • Номер отдела
  • Идентификационный код
  • email

Используйте createTable().

б) После создания таблицы, в бухгалтерии вспомнили, что нужно добавить поле "Оклад". Напишите еще одну миграцию для добавления нового поля.

Используйте addColumn().

в) Через год после начала работы руководство пришло к выводу, что мы не должны хранить место жительства (поле "Город") в таблице сотрудников. Напишите миграцию для удаления этого поля.

Используйте dropColumn().

3. Рассылка ведомостей о зарплате.

а) Написать скрипт (аналогичный примеру в уроке), который 1 раз в месяц по расписанию планировщика отправляет на email адреса сотрудников письмо такого вида:

"Уважаемый Марко Поло! 01.05.2017 Вам была начислена заработная плата в размере $5."

б) Информацию о каждой рассылке стоит записывать в файл log.txt (см. задачу 1)


Код урока:

https://github.com/lukesky1/php-up/tree/1.0.2

Полезные ссылки:

https://yiiframework.com.ua/ru/doc/guide/2/tutoria...

https://zinchenko.us/article/ru-useful-services-fo...

https://help.ubuntu.com/community/CronHowto

https://crontab.guru/#*_*_*_*_*

http://crontab-generator.org/

https://yiiframework.com.ua/ru/doc/guide/2/db-migr...


Назад