如何快速获取到数据库更新?

有一个需求:
用户向MYSQL表中新增了一条数据,我需要用PHP程序及时的把这条数据读取出来,利用短信发送给特定的号码。

我该如何第一时间把这条新增的记录给读取出来?
之前使用的是服务器计划任务,每隔30S通过PHP去读取下数据库看看有无新增。但是这种方式不能达到第一时间,而且还加重了服务器负担。

阅读 2.4k
2 个回答

新建MySQL触发器:

CREATE TRIGGER after_insert
AFTER INSERT
ON your_table FOR EACH ROW
BEGIN
  // 这里你可以调用一个存储过程,将新数据发送到RabbitMQ
END;

RabbitMQ的消费者:

require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

$callback = function ($msg) {
  echo ' [x] Received ', $msg->body, "\n";
  // 这里你可以处理新数据,例如发送短信
};

$channel->basic_consume('hello', '', false, true, false, false, $callback);

while ($channel->is_consuming()) {
    $channel->wait();
}

$channel->close();
$connection->close();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题