4

私は無期限に実行され、5〜10秒ごとに特定のタスクを実行するPHPスクリプトを持っています(do-whileループは、すべての反復の終わりにデータベースをチェックして、続行するかどうかを決定します)。このタスクには、MySQLデータベースクエリが含まれます。データベース接続を処理するための最良の方法は何ですか?するべきか:

a。)反復ごとにデータベースを切断してから再接続しますか?

b。)接続タイムアウトを無期限に設定しますか?

c。)データベースにpingを実行して接続が維持されていることを確認し、実行してクエリを実行する前に、必要に応じて再接続しますか?

d。)他に何かありますか?

編集:明確にするために、スクリプトはユーザーのiPhoneにプッシュ通知を送信します。

4

1 に答える 1

1

PHPスクリプトをデーモンとして実行できないという提案はばかげています。私はそれを数回行いました、そしてそれは非常にうまくいきます。始めるためのサンプルコードがいくつかあります。(PEARが必要です...ファンでない場合は、自分でロールしてください。)

さて、あなたの実際の質問に移りましょう。定期的にクエリを実行している場合、MySQL接続はタイムアウトしません。そのタイムアウトはアイドル接続用です。確実に接続を維持します...切断と再接続のオーバーヘッドの理由はありません。いずれにせよ、データベースに障害が発生した場合、スクリプトはデーモンとして実行されているため、プロセスをすぐに強制終了したくない場合があります。

例外を処理して再接続することをお勧めします。再接続に失敗した場合は、しばらくフォールバックしてから再試行してください。いくつかの失敗(適切なものは何でも)の後、人間の介入を必要とする何かがおそらく壊れているので、その時点でプロセスを強制終了することができます。

于 2012-09-11T04:44:06.483 に答える