PHP をバックグラウンド実行プログラム (バルク SMS など) として使用し、PHP を cli モードで実行します。PHP は、ループでデータベース処理を実行するために MySQL に接続する必要があります。
mysql 接続が中断されると、その後のループの実行は失敗します。
mysql が切断されたときに、後続のプログラムが正常に実行できるように、自動的に再接続できるメソッドを設計する必要があります。
1. テストデータテーブルを作成します
リーリー
2. テストデータを挿入します
リーリー
3. バックグラウンドで実行される PHP ファイル
db.php
リーリー
test.php
リーリー
4. 手順を実行します
test.php を php cli モードで実行し、すぐに mysql.server stop と mysql.server start を実行してフラッシュ停止をシミュレートします
リーリー
ご覧のとおり、中断後はデータベースに再接続できず、後続のプログラムを実行できません。
リーリー
5. 再接続メカニズムを追加します
リーリー
中断後、self::$_instance の値が存在するため、get_conn を呼び出しても再接続はされませんが、保存された接続が処理に使用されます。
これは実際には、接続が存在する場合、mysql 接続を再度作成する必要がなく、mysql 接続の数が減少することを意味します。
そのため、作成されたものの失敗したデータベース接続を使用せずに次回接続を再取得できるように、中断後に self::$_instance の値をクリアする必要があります。
改善方法は以下の通りです
エラー発生時に呼び出されるreset_connectメソッドを追加しました。 MySQL サーバーが消滅したと判断された場合は、既存のデータベース接続がクリアされ、次回からは MySQL に再接続されます。
変更されたphpファイルは次のとおりです:
db.php
リーリー
6.再度フラッシュ実行を実行します
中断後、現在の実行は失敗しますが、後続の実行は再作成され、新しい接続が継続されることがわかります。
リーリー
上記は、PHP が MySql に接続するときに自動的に再接続する方法を編集者が紹介したものです。ご質問があれば、メッセージを残してください。編集者が返信します。時間。ウェブサイトをご利用いただき、誠にありがとうございます。