ホームページ  >  記事  >  バックエンド開発  >  PHP 警告: mysqli_query():解決策

PHP 警告: mysqli_query():解決策

WBOY
WBOYオリジナル
2023-06-25 08:13:201834ブラウズ

PHP テクノロジーの継続的な開発と使用により、問題やエラーが発生することがあります。その中でも、PHP が提供する MySQLi 関数ライブラリは、開発者が MySQL データベースを操作するためによく使用するツールです。 mysqli_query() 関数を使用すると、「PHP 警告: mysqli_query(): (HY000/2006): MySQL サーバーが消えました。」という一般的なエラー メッセージが表示されることがあります。このエラー メッセージは開発プロセスの妨げになる可能性があります。エラーを見つけた場合は、PHP コードが正しく動作できるように、できるだけ早く解決策を見つける必要があります。

以下に、考えられる解決策をいくつか紹介します。

  1. PHP コードを確認してください

このエラーが発生した場合は、まず PHP コードを確認する必要があります。 MySQLi 接続ステートメント間のギャップが長すぎないか、または MySQLi 接続が維持されていないかを確認してください。大量のデータを処理する場合、このエラーが発生する可能性が高くなります。

接続タイムアウトの設定が短すぎる場合、MySQL データベースは接続プロセス中に接続を閉じ、ブラウザにエラー メッセージを表示します。ほとんどの場合、接続タイムアウトを長く設定すると、このエラーの発生頻度が減ります。

解決策:

MySQLi の ping() 関数を使用して、接続ステータスを維持し、MySQLi 接続が正常かどうかを確認できます。この方法では、接続が予期せず終了する問題を簡単に解決できます。

コードでは必ず次の構文を使用してください。

// Mysqli连接语句
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 判断数据库连接是否可用
if (mysqli_ping($conn)) {
    echo 'MySQL connection is still active!';
} else {
    echo 'MySQL connection is dead.';
}
  1. タイムアウト期間を長くします

データ量が多い場合は、次のことができます。接続の安定性を向上させるためにタイムアウト期間を長くします。次のコード スニペットを使用できます。

// 设置超时时间 (单位为秒)
ini_set('mysqlI.connect_timeout', 3600);
ini_set('mysqlI.default_socket_timeout', 3600);
  1. Check MySQL サーバー構成

エラー メッセージには、実際のエラー メッセージだけでなく、データベース エラー メッセージも含まれる場合があります。 。データベース サーバーのログにアクセスすると、エラーに関する詳細情報を取得できます。

MySQL データベースは、起動時に /etc/my.cnf や /etc/mysql/my.cnf などの構成ファイルをロードします。次のパラメータをこの設定ファイルに追加する必要があります:

max_allowed_packet = 128M
wait_timeout = 28800
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = 1G

その中で、max_allowed_pa​​cket は 1 つの SQL クエリ ステートメントで許可される最大送信サイズ (バイト単位) を設定できます。このパラメータのデフォルト値は 4MB です。実際のニーズに応じて調整できます。 wait_timeout パラメータは、MySQL 接続のアイドル時間を秒単位で設定できます。この時間が長すぎると、サーバーのパフォーマンスが低下します。短くすると、タイムアウトにより接続が失われる可能性があります。 innodb_flush_log_at_trx_commit および innodb_buffer_pool_size パラメータは、MySQL 接続のパフォーマンスと安定性を向上させることができ、必要に応じて調整できます。

  1. MySQL データベースを確認する

上記の方法を試しても問題が解決しない場合は、最後に MySQL データベース自体に問題があるかどうかを確認してください。たとえば、次のような MySQL 独自のツールを診断と修復に使用できます。

mysqlcheck -o -A

このコマンドは、MySQL データベースの整合性チェックと修復を実行します。このコマンドには管理者権限が必要であり、このコマンドを実行するには root または同等の権限を持つユーザーである必要があります。

概要

上記は、「PHP 警告: mysqli_query(): (HY000/2006): MySQL サーバーが消えました」エラーが発生した場合に試せる解決策です。 MySQLi は PHP 開発でよく使われるツールであり、このようなエラーが発生するとコード開発に多大な支障をきたしますが、上記の方法を使用することで修復することで問題を解決し、コードの安定性と信頼性を向上させることができます。

以上がPHP 警告: mysqli_query():解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。