
Бэкапы, генерация миграций, pdf и скриншоты
23.10.2019 09:12 | Laravel
За последние месяцы пришлось работать приблизительно с десятком пакетов. Выделю три из них, которые оказались наиболее полезными / существенно сэкономили время.
spatie/laravel-backup
Пакет от бельгийцев Spatie. Будет делать бэкапы файлов проекта и базы данных тогда, когда скажете. 6-я версия пакета требует PHP 7.3. Что касается бд - может работать с MySQL, PostgreSQL и MongoDB. Хорошая документация. Установка:
composer require spatie/laravel-backup
Для публикации конфигурации выполните команду:
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
В результате в папку config
будет скопирован файл backup.php
, в котором можно настроить всё что нужно, а именно:
- файлы какой (базовой) директории включить в бэкап, какие поддиректории исключить (например,
node_modules
,vendor
) - куда сохранять бэкапы и сколько времени их хранить
- максимальный объём памяти под бэкапы (если указанный размер будет превышен, самые старые будут удалены)
- какие нотификейшны и куда отправлять (почта, Slack)
Следует поместить вызов команд в планировщик задач. Например:
// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:clean')->daily()->at('01:00');
$schedule->command('backup:run')->daily()->at('02:00');
}
При этом не забудьте об очередях.
Однозначно рекомендую. Лично я теперь ставлю даный пакет на все проекты.
xethron/migrations-generator
Генерирует миграции на основе существующей базы данных. Казалось бы зачем? Реальная ситуация: пришёл проект на laravel, в котором нет миграций. При этом нужно было дописывать новый функционал, в том числе добавлять поля и новые таблицы. Разумеется, также нужно было написать тесты. Вот тут то и пригодился migrations-generator.
Следует понимать, что пакет не может знать нужную последовательность миграций, эту работу придётся сделать самому. Кроме того, для внешних ключей будут сгенерированы отдельные миграции, что, как по мне, не очень то удобно. После запуска команды я перенёс ключи в соответствующие файлы миграций.
Установка:
composer require --dev "xethron/migrations-generator"
Использование:
php artisan migrate:generate
Возможно, Вы так и никогда и не столкнётесь с подобной ситуацией. Но если так уж сложится - поверьте, с данным пакетом головной боли будет намного меньше.
spatie/browsershot
Ещё один замечательный пакет от Spatie. Конвертирует html в изображение или pdf. Рекомендую внимательно ознакомится с документацией, поскольку есть нюансы при установке. Если всё же будет вылетать ошибка:
libX11-xcb.so.1: cannot open shared object file: No such file or directory
... здесь найдёте решение проблемы.
Пакет богат возможностями и при этом очень прост в использовании. Например, сгенерировать pdf страницы сайта:
Browsershot::url('https://example.com')->savePdf('example.pdf');
либо превратить html в pdf:
Browsershot::html($someHtml)->savePdf('example.pdf');
Позволяет установить ширину и высоту, отступы и т.д.:
// Specify paper size
Browsershot::html($someHtml)
->paperSize($width, $height)
->save('example.pdf');
// Set format size
Browsershot::html('https://example.com')->format('A4')->save('example.pdf');
// Set margins
Browsershot::html($someHtml)
->margins($top, $right, $bottom, $left)
->save('example.pdf');
Почитайте документацию пакета - не пожалеете. Вполне вероятно, найдёте то, что нужно именно Вам.
На сегодня всё. Успехов!