Używam DHTMLX Scheduler na przednim końcu i złącze DHTMLX na zapleczu jako część mojej aplikacji do automatyzacji radiowej. Za każdym razem, gdy użytkownik edytuje kalendarza, wywołanie AJAX jest do pliku, który wygląda tak:Funkcja wyzwalania tuż przed wyjściem
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");
Ten plik jest mój „podkładkę”, że haki do góry frontem do tylnego końca. Chcę uruchomić inny skrypt PHP, który zapisuje zmiany w moim pliku crontab, ale musi się zdarzyć po biblioteka DHTMLX zaktualizowała bazę danych. Problem polega na tym, że biblioteka DHTMLX zostanie automatycznie zamknięta, gdy tylko uzna to za gotowe: czasami może minąć pierwszą linię require_once('...')
, więc nie mogę po prostu wstawić require_once('cronwriter.php');
w ostatniej linii skryptu.
Moim rozwiązaniem było stworzenie klasy z destruktorem, który aktualizuje crontab z najnowszymi zmianami. Ponieważ instrukcja php w języku angielskim nadal będzie działać, jeśli wywoływana jest funkcja exit() lub die(), dodałem klasę fikcyjną z destruktorem, który uruchamia skrypt cronwriter.php
: (dodałem to na początku pliku.)
class ExitCatcher
{
function __destruct()
{
require_once('cronwriter.php');
}
}
//init the class
$ExitCatcher = new ExitCatcher;
Z jakiegoś powodu nie działa.