11

mysql.connect_timeout を使用して PHP からタイムアウトを設定する MySQL 接続に関する特定の投稿があります。PHP からのこの設定されたタイムアウトが、MySQL への最初の接続をタイムアウトするだけなのか、それともデータベースへの特定のクエリに対して有効なのかを知りたいですか?

ここでの私のケースは、MySQL に接続するページが一番上にあり、MySQL に対して 3 ~ 4 個のクエリを次々と実行しているということです。1 番目と 2 番目のクエリは実行に 1 ~ 2 秒しかかかりませんでしたが、3 番目のクエリは 20 秒かかりました。ここで、3 番目のクエリに 20 秒以上かかる場合に備えて、タイムアウトを呼び出したいと思います。したがって、ここで問題となるのは、PHP からのこのタイムアウトの設定は、データベースへの最初の接続に適用されるか、または後続のすべてのクエリにも (独立して) 適用されるかということです。後で、3番目のクエリで20秒後にタイムアウトするように設定するにはどうすればよいですか?

4

6 に答える 6

7

connect_timeout パラメータは、接続時にのみ有効です。DB サーバーが 20 秒程度で到達可能かどうかを確認すると便利です。接続すると、指定されたタイムアウトは無効になります。

公式の mysql マニュアル ページ ( http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html ) にクエリ タイムアウト パラメータが見つからないため、これは可能ではないと思います。

于 2012-03-08T12:57:08.283 に答える
3

シガラームはあなたの友達です。アラームを設定し、シグナル ハンドラを使用してアラームを検出できます。

http://php.net/manual/en/function.pcntl-alarm.php

于 2012-12-03T03:23:55.877 に答える
0

子プロセスをフォークする必要があります。20 秒以内に条件が満たされない場合、親プロセスは子プロセスを強制終了します。

または、クエリなどの IO 操作の現在のスレッドをブロックしない node.js などの言語を使用します。

于 2014-06-16T23:14:04.767 に答える