0

Cronジョブとして、または直接実行する長いPHPスクリプト(おそらく10分続き、多くのcurl呼び出しを含む)があります。$wpdb グローバル変数を使用して SQL 呼び出しを行っていますが、「WordPress データベース エラー MySQL サーバーが消えました」というエラーで mysql データベースが失われ続けています。

wp-db.php で wait_timeout の値を 3600 に変更して、他の人が提案することを試しましたが、それでも同じです。他にできることはありますか?

4

1 に答える 1

1

明白なことを述べると、これは MySQL が接続を閉じたことを意味します。これは、- より大きいクエリを送信したか、-クエリ間のmax_allowed_packet時間が より長くかかったためwait_timeoutです。

タイムアウトと仮定すると、

をスクリプト$wpdb->query("set wait_timeout = 1200")の先頭近くに配置します。これにより、WP コア ファイルを変更する手間が省けます。

それでもうまくいかない場合は、MySQL の「ping」機能を試してください。wp-includes/wp-db.phpで、 を見つけ、そのfunction query(少し下にある行はmysql_query- その上に行を追加します

mysql_ping( $dbh );

Ping は接続をチェックし、再接続を試みます。実行時間の長いスクリプトでは非常に便利です。

うまくいけば、その中の何かが (a) 理にかなっていて、(b) うまくいくでしょう。また、これを読んでいる他の人のために、Wordpress をアップグレードすると、コア ファイルに加えた変更が上書きされることを忘れないでください。

リンク: http://blog.webyog.com/2009/09/02/%E2%80%9Cmysql-server-has-gone-away%E2%80%9D-part-2-session-timeout/およびhttp: //php.net/manual/en/function.mysql-ping.php

于 2013-02-09T08:30:41.623 に答える