Соедините cron/команды Laravel с интерфейсом
Laravel является одним из лучших PHP-фреймворков за последние пару лет, и на это есть несколько веских причин. почему это но мы не обсуждаем это в этом посте.
Что мне больше всего нравится в среде laravel, так это простота написания заданий cron (также известных как команды) и их обслуживания. Но много раз я оказывался в ситуациях, когда я хотел отобразить то, что cron в данный момент делает, на интерфейсе. И я считаю, что почти все разработчики хотят это сделать.
Уведомления в режиме реального времени жизненно важны для любого приложения (веб-сайта или универсального), и Pusher является выдающимся среди самых известных администраций, которые поощряют вас передавать непрерывные уведомления вашим приложениям. Я использовал Pusher в нескольких мероприятиях, и это было приятно реализовать. Таким образом, у нас есть возможность понять, как мы можем выполнять постоянные уведомления в этом учебном упражнении по толкателю laravel.
Прежде чем мы начнем, вы должны сначала бесплатно получить app_id, ключ и секрет. Pusher.com
Установите пакет pusher в ваше приложение laravel.
composer require pusher/pusher-php-server
Я полагаю, что на данный момент у вас уже есть класс cron/command с некоторым кодом. Если вы этого не сделаете и будете следовать этой статье только в учебных целях, создайте класс cron, выполнив следующую команду:
php artisan make:command ExampleCommand
Давайте просто предположим, что ваша команда мало что делает и просто извлекает всех активных пользователей из таблицы пользователей и перебирает их, отправляя имя во внешний интерфейс, поместите следующую команду в вашу функцию handle():
public function handle() {
$users = App\User::where('is_active', 1)->get();
foreach($users as $user) {
//You will get cluster name from pusher.com replace it below
$options = ['cluster' => 'mt1', 'encrypted' => true];
//Replace your key, app_id and secret in the following lines
$pusher = new Pusher(
'key',
'secret',
'app_id',
$options
);
$message= "The current user name is $user->name";
//Send a message to users channel with an event name of users-list
$pusher->trigger('users', 'users-list', $message);
}
}
Теперь у вас должен быть маршрут, который принимает запрос GET и возвращает представление, внизу этого представления вы должны поместить следующий код:
<!-- Incldue Pusher Js -->
<script src="
<script>
//Remember to replace key and cluster with the credentials that you have got from pusher.
var pusher = new Pusher('key', {
cluster: 'mt1',
encrypted: true
});
//In case you have decided to use a different channel and event name then change it here to match with the one that you have used
var channel = pusher.subscribe('users');
channel.bind('users-list', function(message) {
// for demonstration purpose I am just alerting the message passed by the cron/command but in a real life/production application you should never do that
alert(message);
});
</script>
И вот, запустите вашу команду из терминала, и вы должны начать видеть уведомления.
Источник изображения: скотч.ио