Как заставить PHP-скрипт реагировать в режиме реального времени на вставку базы данных?

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

Эти пользователи находятся в таблице в базе данных (postgresql). Каждый раз, когда новый пользователь регистрируется в приложении, в таблицу вставляется новая запись, которая назначает ее одному из работающих в данный момент PHP-скриптов (равномерно распределяя нагрузку).

Есть ли способ, чтобы скрипт PHP, которому он был назначен, мог реагировать в режиме реального времени, чтобы немедленно начать получать информацию о пользователе?

(У меня есть текущие настройки: каждый PHP-скрипт запрашивает таблицу каждые 1 мин и проверяет, назначены ли ей новые пользователи … но более частые запросы увеличивают нагрузку на базу данных, и в этом 1-минутном окне я не получаю информацию от недавно добавленного пользователя.)

0

Решение

Проверьте этот пример кода PHP для postgres LISTEN а также NOTIFY: http://php.net/manual/en/function.pg-get-notify.php

Postgres человек на LISTEN/NOTIFY:
http://www.postgresql.org/docs/current/static/sql-notify.html
http://www.postgresql.org/docs/current/static/sql-listen.html

1

Другие решения

Запустить HTTP-запрос от sys_exec() запустить с Триггер SQL ? Но это кажется излишним.

DELIMITER $$

CREATE TRIGGER `test_after_insert` AFTER INSERT ON `test`
FOR EACH ROW BEGIN

SET @exec_var = sys_exec('/usr/bin/php /myApp/after_insert.php')
END;
$$

DELIMITER ;

Я знаю, что это не скрипт Postgres, но он должен работать.

— РЕДАКТИРОВАТЬ —

И после в after_insert.php :

function httpPost($url, $data)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}

источники:
Как сделать HTTP Пост

0

По вопросам рекламы [email protected]