0

我每晚在我的 Web 服务器上运行一个 cron 脚本来拍摄我所有数据库的快照,然后将其存储在 S3 上。

我运行的文件在 github > phpMyS3backup

大部分时间它运行良好,但其他时候我得到一个Fatal error: Call to a member function fetch() on a non-object in ~/phpMyS3backup.php on line 30.

这发生在这一点:

$GLOBALS['con']= new PDO('mysql:host='.DB_HOST, DB_USER, DB_PASS);
try {
    $res = $GLOBALS['con']->query("SHOW DATABASES");
    while($row = $res->fetch()){
        if($row['Database'] != "information_schema"){
            $alldb[] = $row['Database'];
            deb("Database found: {$row['Database']}");
        }
    }
}

几个问题:

为什么会失败?如果在脚本运行时正在访问任何站点,那会停止脚本运行并导致错误吗?就像我说的,很多时候它有效,其他时候则无效。

将 fetch 放入循环中是否安全,以便如果确实失败,它会再次尝试?还是会陷入无限循环,或者有其他性能问题?

4

0 回答 0