我运行自己的备份课程。在其中我有一个维护功能,检查用户是否是管理员,检查用户是否在主页上,然后通过检查文件创建的时间戳扫描备份目录以查看该站点是否在一天内没有备份。如果存在文件或缺少文件超过一天的情况,它会启动备份并通知用户。
在我将它移植到课堂之前,它运行良好(不确定我是否在此过程中搞砸了任何事情)。出于调试目的,我添加了一些回声 .etc。
问题是如果目录为空(意味着需要备份或未$latest_filename
设置),维护脚本不会执行任何操作。我所有的调试都让我相信set
即使 dir 为空,后一个变量也总是在计算。
if ($frontpage && checkAdmin()) {
$path = $this->dir_sql;
$latest_ctime = 0;
$latest_filename = '';
$d = dir($path);
while (false !== ($entry = $d->read())) {
$filepath = "{$path}/{$entry}";
// could do also other checks than just checking whether the entry is a file
if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
$latest_ctime = filectime($filepath);
$latest_filename = $entry;
echo $latest_filename;
echo $latest_ctime;
}
}
// check if latest backup is over a day old
// if it is create a new backup and run the regular
// maintenance scripts below
if (is_file($latest_filename) && date('d', filectime($latest_filename)) == date('d')) {
self::doBackup();
} elseif(!isset($latest_filename)) {
self::doBackup();
}
}
编辑/更新:
我只是
if (isDirEmpty($this->dir_sql)) {
self::doBackup();
}
在 if 之前添加了,并在底部删除了 elseif,这起到了作用,但仍然很奇怪。