PHP检索数据库行计数并执行文件

时间:2012-03-20 08:38:20

标签: php sql cron

我有一个简单的问题。我想写一个php函数来检查数据库行,如果行数受上次运行查询的影响,执行内部php文件。问题是,我希望它检查行,并同时检查时间戳,因此如果时间戳不同且行数不同,则执行php文件。 有问题的文件是一个sql数据库备份,所以我只需要在数据库中有更改并且时间戳超过43200秒(半天)时执行。如果网站上有活动,这将备份数据库(一个活动将返回一次,两个活动将备份两次,并且会忽略任何其他活动),如果没有,则不会执行任何操作。我希望我解释得对。 Cron的工作是不可能的,因为它取决于数据库的变化,而不仅仅是时间。

我正在使用的代码是这样的(不检查数据库行),只有当客户访问购物车结帐或帐户页面时才会访问:

<?php
$dbbackuplog = '/path/to/backuptime.log';
if (file_exists($dbbackuplog)) {
$lastRun = file_get_contents($dbbackuplog);
if (time() - $lastRun >= 43200) {
     //Its been more than 12 hours so run the backup
     $cron = file_get_contents('/file.php');

     //update backuptime.log with current time
     file_put_contents($dbbackuplog, time());
    }
}
?>

我感谢任何意见或建议。

1 个答案:

答案 0 :(得分:0)

首先,您无法使用file_get_contents运行任何内容。该函数只是读取您要求的文件的裸内容,在任何情况下都不会运行任何代码。如果您想运行代码,则需要includerequire

其次,在客户执行操作时,您的想法不仅仅是触发而且完全执行备份,好吧,我不打算采取任何措施,糟糕。人们使用cron进行备份(实际上不止一个原因)是有原因的,你应该遵循这个例子。这并不是说不允许基于动态因素影响cron脚本的行为,而是采取备份的行为总是在后面执行场景。