Бэкапы, генерация миграций, pdf и скриншоты

Бэкапы, генерация миграций, pdf и скриншоты

За последние месяцы пришлось работать приблизительно с десятком пакетов. Выделю три из них, которые оказались наиболее полезными / существенно сэкономили время.

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');

 

Почитайте документацию пакета - не пожалеете. Вполне вероятно, найдёте то, что нужно именно Вам.

На сегодня всё. Успехов!