2014-09-12 6 views
10

Я использую DHTMLX Scheduler на передней панели и разъем DHTMLX на бэкэнд как часть моего приложения для автоматизации радио. Каждый раз, когда пользователь редактирует календарь, вызов AJAX производится в файл, который выглядит следующим образом:Функция триггера непосредственно перед выходом

require_once("dhtmlxScheduler_v4/connector/scheduler_connector.php"); 
require_once('QDRAconf.php'); 

$res = mysql_connect($QDRAconf['mysqlHost'], $QDRAconf['mysqlUser'], $QDRAconf['mysqlPass']); 
mysql_select_db($QDRAconf['mysqlDb']); 

// init the schedulerconnector 
$conn = new SchedulerConnector($res); 

// render the table 
$conn->render_table("events","id","start_date,end_date,text"); 

Этот файл является моим «прокладка», который перехватывает вверх по выходивший к заднему концу. Я хочу запустить другой скрипт PHP, который записывает изменения в мой crontab, но это должно произойти после библиотека DHTMLX обновила базу данных. Проблема в том, что библиотека DHTMLX автоматически выйдет всякий раз, когда она думает, что это сделано: иногда она может не пройти первую строку require_once('...'), поэтому я не могу просто поставить require_once('cronwriter.php'); на последнюю строку скрипта.

Моим решением было создать класс с деструктором, который обновит crontab с последними изменениями. Поскольку дескрипторы php manual states that будут выполняться, если вызывается функция exit() или die(), я добавил фиктивный класс с деструктором, который запускает сценарий cronwriter.php: (я добавил это в начало файла.)

class ExitCatcher 
{ 
    function __destruct() 
    { 
     require_once('cronwriter.php'); 
    } 
} 
//init the class 
$ExitCatcher = new ExitCatcher; 

По какой-то причине это не работает.

ответ

2

register_shutdown_function может предложить быстрое решение; но вы можете сэкономить себе некоторые будущие проблемы, проверив причину возникновения спорадического процесса этой библиотеки.

Хорошее место, чтобы начать может быть ...

  • JS console для JS ошибки браузера
  • вкладка Сеть JS консоли для AJAX ошибки
  • журналы ошибок вашего сервера на наличие ошибок PHP