@apokryfosは彼のコメントの通りです。
あなたのonkeyup
イベントハンドラは、何らかの形でMySQLクエリを開始します。おそらく、ユーザーのブラウザからphpページへのajax形式のリクエストを経由します。 MyQLクエリが完了してその結果セットをブラウザに返す前に、次のイベントハンドラが別のクエリを開始します。
MySQLクエリが(通常のPHP実装で)開始されると、完了まで実行されます。これは、クエリーの実行中にユーザーがブラウザからPHPへの接続を閉じても当てはまります。あなたのユーザが速く多くのクエリを実行できるのであれば、それらのクエリはリソースがなくなるまでMySQLサーバに蓄積されます。
ここには潜在的な悪循環があります。ユーザーは「多分私の要求は通りませんでした」と思ってもう一度クリックします。
jQueryUIオートコンプリートウィジェットには、リクエストが送信される頻度を制御するためのdelay
パラメータがあります。 http://api.jqueryui.com/autocomplete/#option-delay私の経験では、1〜2秒に設定すると高品質のユーザーエクスペリエンスが得られます。このようなウィジェットを使用すると便利です。他の誰かがすでに遅延のために使用されているJavaScriptタイムアウトの複雑さをデバッグしました。
キーアップ時に盲目的にイベントを発生させるのは悪い習慣です。キーアップ検索が本当に必要な場合は、javascriptで0.5秒のタイムアウトを追加し、次のkeyupイベントで「上書き」(クリアして別のものを設定)する必要があります。また、新しいAjaxリクエストが発生した場合は、前のAjaxリクエストを中断します。 – apokryfos
@apokryfosあなたの答えをありがとう。私はあなたが話していることを理解しています。私は今試してみます。私はあなたに結果を知らせます。 –