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


PHP retrieving database row counts and executing a file

我有一个简单的问题。我想写一个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());
    }
}
?>

我感谢任何意见或建议。

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

其次,当客户执行操作时,您不仅要触发而且要完全执行备份的想法是,好吧,我不会采取任何措施,太可怕了。人们使用cron进行备份是有原因的(实际上不止一个原因),您应该遵循该示例。这并不是说你不允许基于动态因素影响cron脚本的行为,而是说备份的行为应该始终在幕后执行。