从MySQL触发器调用PHP脚本

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (77)

在将记录插入MySQL数据库表时,如何调用PHP页面/函数?我们无法控制记录插入过程。是否有一个可以调用PHP脚本的触发机制?

提问于
用户回答回答于

触发器在MySQL服务器上执行,而不是在PHP服务器上执行(即使它们都在同一台计算机上)。

所以,我想说这不太可能--至少不是简单的。

不过,考虑到此条目来自MySQL FAQ on触发器

23.5.11:触发器可以通过UDF调用外部应用程序吗?是的。例如,触发器可以调用sys_exec()UDF可在这里获得:https://github.com/mysqludf/lib_米斯鲁德(Mysqludf)_sys#自述

因此,可能有一种通过UDF函数启动php可执行/脚本的方法。不是那么容易,但似乎是可能的。

用户回答回答于

  1. 由于我们使用的是Windows,所以我们必须使用以下方法编译用于Windows的UDF库并将它们安装在MySQL服务器上。
  2. 我们创建了一个调用sys的存储过程。_伊瓦尔。
  3. 我们创建了一个调用存储过程的触发器。

存储过程代码:

DELIMITER $$
CREATE PROCEDURE udfwrapper_sp
(p1   DOUBLE,
 p2   DOUBLE,
 p3 BIGINT)
BEGIN
 DECLARE cmd CHAR(255);
 DECLARE result CHAR(255);
 SET cmd = CONCAT('C:/xampp/php/php.exe -f "C:/xampp/htdocs/phpFile.php" ', p1, ' ', p2, ' ', p3);
 SET result = sys_eval(cmd);
END$$;

触发代码:

CREATE TRIGGER udfwrapper_trigger AFTER INSERT ON sometable
FOR EACH ROW
CALL udfwrapper_sp(NEW.Column1, NEW.Column2, NEW.Column3);

对于存储过程,我并不感到兴奋,我也不知道它是否会产生额外的开销,但它确实有效。每次向Someetable添加一行时,触发器都会触发。

扫码关注云+社区