Соедините 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>

И вот, запустите вашу команду из терминала, и вы должны начать видеть уведомления.

Источник изображения: скотч.ио

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *