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']}");
}
}
}
いくつかの質問:
なぜ失敗するのですか?スクリプトの実行時にいずれかのサイトにアクセスしている場合、スクリプトの実行が停止してエラーが発生しますか?私が言うように、多くの場合、それは機能しますが、そうでない場合もあります。
フェッチをループに入れて、失敗した場合に再試行するのは安全ですか?または、それが無限ループになる可能性がありますか、または他のパフォーマンスの問題がありますか?