MYSQL 外部启动 PHP 脚本的触发器
MYSQL trigger that externally launches a PHP script
我目前正在尝试使用 mysql 触发器来启动 php 脚本。启动时,脚本会从特定网站检索数据,并将其放入另一个 table。我已经测试了该脚本,当我使用 php5 运行 它时,它目前可以正常工作。我还正确安装了 lib_mysqludf_sys,并将正确的文件夹移动到 mysql 的插件文件夹中。当我创建触发器时,我没有收到任何错误。它只是不会 运行 我的 php 脚本。我哪里出错了,我该如何解决?
DELIMITER $$
CREATE TRIGGER getFriends
-> AFTER INSERT ON tbluser
-> FOR EACH ROW
-> BEGIN
-> DECLARE RESULT INT;
-> SET RESULT = sys_exec('php5 /var/www/html/getFriends.php');
->END$$;
DELIMITER ;
确认您使用的是正确的插件文件夹:
SHOW VARIABLES LIKE 'plugin_dir';
重新创建函数:
DROP FUNCTION IF EXISTS sys_exec;
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
确保您使用的是可执行文件的完整路径:
SET RESULT = sys_exec('/usr/bin/php5 /var/www/html/getFriends.php');
并确保 任何用户 MySQL 运行 因为 有权访问此脚本,并执行它正在做的任何事情。
我目前正在尝试使用 mysql 触发器来启动 php 脚本。启动时,脚本会从特定网站检索数据,并将其放入另一个 table。我已经测试了该脚本,当我使用 php5 运行 它时,它目前可以正常工作。我还正确安装了 lib_mysqludf_sys,并将正确的文件夹移动到 mysql 的插件文件夹中。当我创建触发器时,我没有收到任何错误。它只是不会 运行 我的 php 脚本。我哪里出错了,我该如何解决?
DELIMITER $$
CREATE TRIGGER getFriends
-> AFTER INSERT ON tbluser
-> FOR EACH ROW
-> BEGIN
-> DECLARE RESULT INT;
-> SET RESULT = sys_exec('php5 /var/www/html/getFriends.php');
->END$$;
DELIMITER ;
确认您使用的是正确的插件文件夹:
SHOW VARIABLES LIKE 'plugin_dir';
重新创建函数:
DROP FUNCTION IF EXISTS sys_exec;
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
确保您使用的是可执行文件的完整路径:
SET RESULT = sys_exec('/usr/bin/php5 /var/www/html/getFriends.php');
并确保 任何用户 MySQL 运行 因为 有权访问此脚本,并执行它正在做的任何事情。