Я использую 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 script, который записывает изменения в мой crontab, но это должно произойти после того, как библиотека DHTMLX обновила базу данных. Проблема заключается в том, что библиотека DHTMLX автоматически выйдет, когда она сочтет это возможным: иногда она может не пройти первую строку require_once('...')
, поэтому я не могу просто поместить require_once('cronwriter.php');
в последнюю строку script.
Моим решением было создать класс с деструктором, который обновляет crontab с последними изменениями. Поскольку в справочнике php указано, что деструкторы будут выполняться, если вызывается функция exit() или die(), я добавил фиктивный класс с destructor, который запускает cronwriter.php
script: (я добавил это в начало файла.)
class ExitCatcher
{
function __destruct()
{
require_once('cronwriter.php');
}
}
//init the class
$ExitCatcher = new ExitCatcher;
По какой-то причине он не работает.