我在前端使用
DHTMLX Scheduler和后端的DHTMLX Connector作为我的无线电自动化应用程序的一部分.每次用户编辑日历时,都会对一个如下所示的文件进行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手动states that析构函数仍然会在exit()或die()函数被调用时运行,所以我添加了一个带有析构函数的虚拟类,它运行cronwriter.PHP脚本:(我把它添加到文件的开头)
class ExitCatcher { function __destruct() { require_once('cronwriter.PHP'); } } //init the class $ExitCatcher = new ExitCatcher;
由于某种原因,它不起作用.