如何让PHP脚本实时响应数据库插入?

时间:2016-03-14 16:25:21

标签: php mysql postgresql ipc

我有多个PHP脚本全天候运行,每个脚本位于不同的计算机上,用于从Internet获取有关用户的信息。

这些用户位于(postgresql)数据库的表中。每次新用户在应用程序中注册时,都会在表中插入一条新记录,并将其分配给当前正在运行的PHP脚本之一(均匀分配负载)。

有没有办法让分配给它的PHP脚本能够实时做出反应,以便立即开始获取有关用户的信息?

(我目前的设置是每个PHP脚本每隔1分钟查询一次表,并检查是否已为其分配新用户...但更频繁的查询会增加数据库负载,在那1分钟窗口中,我是不从新添加的用户获取信息。)

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

SQL触发器触发sys_exec()启动的HTTP请求?但这似乎有点矫枉过正。

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;
}
来源: How to make an HTTP Post