PHPでmysqliクラスを使用する際に問題が発生しており、どこでも答えを見つけることができませんでした。PHP mysqli再接続の問題
私のスクリプトでは、クラスはその機能を通して使用するmysqli接続を作成します。その後、このスクリプトはフォークします。接続は子供達によっても使用されますが、子どもが死ぬと親の中で接続が切断される問題(MYSQL Server Has Gone Away)が発生しています。
mysql(単にmysqlを使用していました)に切り替える前に、親プロセスでクエリを実行する前にmysql_pingを呼び出してdb接続があることを確認しました。 Mysqliには同様のping機能がありますが、接続が切断されても実際には再接続しません。 mysqli.reconnect = ONグローバル設定を使ってみました(php.iniとini_setを使用しています)。
php mysql_connect関数を使用すると、既存の接続を取得することができます。したがって、mysqliの代わりにmysqlを使用していた場合、forkした直後に子プロセスで接続を再利用できます。しかし、mysqliはそのような機能を持っていないようです...
私ができることは、mysqli-> ping()を呼び出すことでした。それがfalseを返した場合は、親のデータベースに再接続してください。これはひどく非効率で、mysqli(そして手動で再接続する必要はありません)を使ってmysqlに正しく変更する方法を理解しています。
何か提案がありますか?
それはうまくいった。私はあなたがこの変数を変更するためにini_setを使用することができなかったことに気づいていませんでした。私は天才で、前にphp.iniに行を追加しました。ファイル。しかし、それを削除してmysqli.reconnectを使ってmysqli-> ping()をmysql_pingと同じように動作させました。助けてくれてありがとう! –