Триггер MYSQL, который внешне запускает скрипт PHP

В настоящее время я пытаюсь использовать триггер mysql для запуска сценария php. При запуске скрипт извлекает данные с определенного веб-сайта и помещает их в другую таблицу. Я протестировал скрипт, и в настоящее время он работает, когда я запускаю его, используя 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 ;

1 ответ

Решение

Убедитесь, что вы используете правильную папку плагинов:

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, который работает под именем, есть права доступа к этому сценарию, и делайте все, что он делает.

Другие вопросы по тегам