Я использую 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;
По какой-то причине это не работает.