从 MySQL 触发器调用 PHP 脚本
有没有办法在将记录插入MySQL数据库表时调用PHP页面/函数?我们无法控制记录插入过程。有没有可以调用PHP脚本的触发机制?
有没有办法在将记录插入MySQL数据库表时调用PHP页面/函数?我们无法控制记录插入过程。有没有可以调用PHP脚本的触发机制?
触发器在MySQL服务器上执行,而不是在PHP服务器上执行(即使它们都在同一台计算机上)。
所以,我想说这是不可能的 - 至少不是简单地。
不过,考虑到触发器MySQL常见问题解答中的这个条目:
23.5.11: 触发器可以通过 UDF 调用外部应用程序吗?
是的。例如,触发器可以调用此处提供的 UDF:https://github.com/mysqludf/lib_mysqludf_sys#readme
sys_exec()
因此,可能有一种方法可以通过UDF函数启动php可执行文件/脚本。没那么容易,但似乎有可能。;-)
我和一位朋友已经想出了如何将Bernardo Damele的sys_eval UDF,但解决方案并不像我想要的那么优雅。以下是我们所做的:
存储过程代码:
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);
我对拥有存储过程并不感到兴奋,我不知道它是否会产生额外的开销,但它确实有效。每次将一行添加到某个表中时,触发器就会触发。