我在我的网络服务器上运行一个夜间的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放入循环是否安全,以便如果失败则再次尝试?或者最终会出现无限循环,还是有其他性能问题?