Получить обновление от MySQL, как только новая вставка

0

У меня есть интернет-магазин, пользовательский заказ будет сохранен на mysql, и он будет обрабатываться позже в пакете "processor.php", он будет обработан позже, потому что требование отправить этот заказ на другой сервер использует приложение чата

processor.php - это jabber-бот, php-бот, который будет работать 24/7, и он будет проверять на db каждые 5 минут и обрабатывать заказы (отправлять их другим ботам и обновлять заказы на основе ответа других ботов)

Я задаюсь вопросом, есть ли способ, с помощью которого у процессора.php может быть уведомление типа "эй, новый порядок, обрабатывать его" из mysql каждый раз, когда пользователь отправляет новый заказ, что-то вроде реального времени

  • 1
    настроить триггер.
  • 1
    Возможный дубликат вызова скрипта PHP из триггера MySQL
Показать ещё 7 комментариев
Теги:
real-time

1 ответ

1
Лучший ответ

Лучшее, что вы можете сделать, это отредактировать файл, который ВСТАВЛЯЕТ данные в первую очередь.

Вы можете использовать $query-> insert_id; или эквивалент myqsli, если вам нужен идентификатор нового заказа

Затем вы можете передать этот идентификатор процессору. Поверьте мне, полагаясь на кроны, вы можете стать кошмаром, а с платежами и заказами я настоятельно рекомендую избегать решения cron.

Тем не менее, если ваш процессор только меняет вещи в самой БД, и больше ничего не может использовать встроенные триггеры MySQL!

https://www.siteground.com/kb/mysql-triggers-use/

Но если ваш процессор работает не с DB, вам придется либо:

Используйте свой cron

Настройте вставку заказа, чтобы затем запустить процессор самостоятельно, не используя cron.

Настройте функцию, которая проверяет, готов ли заказ к обработке на странице, которую посещает пользователь, чтобы их заказ мог начать обработку без каких-либо задержек.

Вы можете использовать AJAX или даже PHP для вызова processor.php. вы даже можете передать ему определенный идентификатор. По существу, любой базовый метод, такой как получение содержимого файла, $.get() или любая другая функция программирования (на любом языке), позволит вам вызвать процессор.php и запустить этот файл на вашем веб-сервере. Вы можете сделать это на любом языке, который поддерживает запрос файла с того же или другого сервера (так чаще всего).

Я настоятельно рекомендую вам установить правильные разрешения и даже базовый API, так что только ваш сервер и службы могут запускать процессор!

  • 0
    почему вы говорите "кроны могут стать кошмаром"? часто это лучший вариант - особенно для заказов, когда вы не хотите, чтобы потенциальная зависание зависало при создании проблем. с помощью cron вы получаете нечто полностью изолированное и не можете вмешиваться в сценарий, выполняющий вставку.
  • 0
    Cron следует использовать для поиска заказов, которые не удалось обработать. Это не должно быть главным, чтобы начать обработку заказа. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню