Как мы можем отслеживать таблицу MYSQL DB в реальном времени для любого обновления и вставки с помощью PHP(без cron) или любого другого скриптового языка?


Как мы можем отслеживать таблицу MYSQL DB в реальном времени для любого обновления и вставки с помощью PHP(без cron) или любого другого скриптового языка?

22.10.2020 10:25:17 Просмотров 57 Источник

Как мы можем отслеживать таблицу MYSQL DB в реальном времени для любого обновления и вставки с помощью PHP(без cron) или любого другого скриптового языка?

У меня есть рабочий поток, как.

Вызов PHP API(Lumen) добавит новую запись в таблицу. Система будет постоянно проверять эту строку в течение X секунд(используя cron). Проверка X секунд выполняется для любых обновлений, выполненных над этой строкой с помощью API отмены. Пользователь мобильного приложения может отменить этот запрос за X секунд.

Я попытался реализовать это с помощью PHP cron-задания, работающего каждые несколько секунд. Но мы предполагаем, что это не будет хорошим решением.

Есть ли какие-то другие инструменты, которые мы можем использовать вместо Cron для этого ?

Наша первоначальная логика состоит в том, чтобы удерживать API в течение 15 секунд и возвращать результат следующим образом

$this->timer = new LaravelTimer();
$this->timer->timerStart(id);
$time = $this->timer->timerRead(id); 

    while(floor($time) < 16000) 
        {
    
            if(//Checking for cancel Request Here)
                 
                //Break the loop  if cancel request came from second API
                //Return API Response
            } else
            {                                                           
                $time = $this->timer->timerRead(id); 
                if (floor($time) >= 15000) {
                 //Break the loop  and return API Response
                }
    
                //Continue Loop
            }
        }
У вопроса есть решение - Посмотреть?

Ответы - Как мы можем отслеживать таблицу MYSQL DB в реальном времени для любого обновления и вставки с помощью PHP(без cron) или любого другого скриптового языка? / How Can we monitor MYSQL DB table in realtime for any update and insert using PHP(Without cron) or any other scripting language?

starlight93

26.10.2020 07:52:52

Это зависит от значения вашего "мониторинга в реальном времени". Я предполагаю, что вы хотите сообщить об изменениях данных в интерфейсных приложениях. Некоторые из многих решений:

  1. Добавьте сценарий мониторинга (например, функцию сценария обратного вызова после вашего сценария вставки/обновления). Например, если вы используете websocket connection для информирования frontend-приложения в браузере с помощью javascript или последовательно записываете отчет в текстовый файл:
//1. your INSERT/UPDATE script
//2. do your reporting/monitoring callback script here as like sending to websocket server or writing data changes report to a file
  1. Вместо cron, и если вы используете PHP-фреймворк, такой как laravel, просто используйте очередь laravel для периодического запуска скрипта в качестве фонового задания. Просто возьмите теорию этого дока: https://laravel.com/docs/master/queues

  2. Если вы действительно хотите использовать while-loop для проверки изменений данных и информирования frontend, вы можете использовать метод серверных событий в PHP.

Надеюсь, что эти варианты помогут вам.

Помочь в развитии проекта:
Закрыть X