插入表后在mysql触发器中发送http请求

Eli*_*shy 7 php mysql triggers http

我在 PHP 中工作。我必须创建一个 mysql 触发器,它在插入表后触发 http 请求。下面是代码。

DELIMITER @@
CREATE TRIGGER Test_Trigger
AFTER INSERT ON insertsms
FOR EACH ROW
BEGIN
  SET @tt_json = (SELECT json_object(id,addtime,title) 
                  FROM insertsms WHERE id = NEW.id LIMIT 1);
  SET @tt_resu = (SELECT http_put(CONCAT('--url localhost--')));
END;
@@
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

但我收到了类似的错误

消息:SQLSTATE[42000]:语法错误或访问冲突:1305 FUNCTION emg.json_object 不存在

消息:SQLSTATE[42000]:语法错误或访问冲突:1305 FUNCTION emg.http_put 不存在

如何消除这个错误?我无法下载包含这些功能的支持文件。我已经在 localhost 中进行了测试。还有其他方法可以满足我的要求吗?请任何人帮助我..

pet*_*erm 3

尽管从技术上讲这是可能的,但出于以下几个原因,我强烈建议您不要走这条路:

  1. 使用 UDF 本身就是一种安全风险。UDF 可供所有数据库用户使用 - 您不能为他们授予 EXECUTE 权限。

  2. 在触发器中执行任何非事务性操作都是错误的。DML 语句所做的数据更改(在您的情况下是更新)可以并且将会在现实场景中回滚。您将无法撤消您的 http 调用。

  3. 您延长插入事务的时间可能会导致其他更新/插入操作的锁定等待超时。

强烈推荐阅读:


现在您最有可能需要的是一个工作队列,例如beanstalked。使用这种专门的中间件比用数据库组织队列要好得多。