Один хороший способ сделать это - сначала подготовить функцию для проверки дискового пространства.
function spaceLimit($limitPercent) {
$drive = "/";
$space = (disk_free_space($drive) / disk_total_space($drive)) * 100;
return $limitPercent < $space;
}
Затем отправьте электронное письмо после проверки на указанный c внутренний (в файле app/Console/Kernel.php
).
protected function schedule(Schedule $schedule)
{
// Ensure queue:work is running
$schedule->call(function() {
// 90% and more space used
if (spaceLimit(90)) {
Mail::to('admin@me.com')->send(/* Some Mailable Class here */);
}
})->everyFiveMinutes(); // Change interval here
}
Конечно, функцию spaceLimit
можно сохранить в том же файле, или в другом, или где угодно.
Кроме того, вы можете представить себе Класс событий для удобной обработки других видов уведомлений позже (таких как SMS, Pu sh Уведомление, что угодно ..).
Не забудьте, что вам потребуется настроить cron для выполнения ваших задач. Crontab:
* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1
И, если ваши электронные письма находятся в очереди, вам также нужно будет запустить очередь:
php artisan queue:listen