-1

定期的に多くのjQueryajaxリクエストを作成し、php関数からの応答を要求するページがあります。

$.ajax({
      url: "functions.php",
      type: "POST",
      data: {action : 'getData', id : draftid},
      dataType: "html"
    }).done(function(output) {
        $("#myDiv").html(output);
    });

この1ページを開いているときにマシンで実行中のタスクを見ると、4つまたは5つのphpタスクが実行されていることがわかります。このページを複数のページで同時に実行することを計画していますが、ホストはそれについてあまり満足しないだろうと感じています。

タスクの量とCPU使用率を最小限に抑えるために、phpスクリプト(主にMySQLリクエスト)から取得する情報をjQueryに取得するために使用できる別の方法はありますか?

編集:functions.phpファイルは基本的に、SQL要求を行い、関連データを返す要求された関数を呼び出す単なるswitchステートメントです。

PHPタスクの詳細はわかりません。topを実行すると、コマンド「php」を使用した多くのプロセスが表示されます。私はLinuxのプロではないので、これらのプロセスがより具体的に何をしているのかを理解するために実行できるコマンドがあるのではないでしょうか。

4

3 に答える 3

1

いずれかのリクエストを1つのリクエストにまとめることができますか?何らかの方法で戻りデータを解析する必要がありますが、それは大したことではありません。サーバーを制御できますか?その場合は、fast-cgiを使用してWebサーバーを試して、実行中のプロセスの数とプールデータベース接続を制御できます。

于 2012-04-13T19:47:16.803 に答える
0

最適化されたSQLクエリ、可能であればキャッシングシステムを構築しますか?(そこで何をプログラミングしているのかわからない!)

また、パフォーマンスの高い別のWebサーバーに切り替えることもできます(Apacheよりも約60%高速なLitespeedをお勧めします)

また、Apacheが一度に複数のインスタンスを実行しているかどうかも不思議ではありません。これはapacheでは正常です。

于 2012-04-13T19:48:26.713 に答える
0

より多くの情報を知らなければ、私は多くを言うことはできませんが、javascriptからmysqlサーバーに直接接続することはできません。必要なデータによっては、バックエンド処理を大幅に削減する方法がある場合があります。

いくつかの一般的なアイデア:

  • ajaxsリクエストを1つの「ハートビート」/アップデートリクエストにまとめて、1つのプロセスのみを実行するようにします

  • memcacheのようなものを使用してdbデータのバックエンドキャッシングを実行できる場合

  • XDEBUGとwebgrindを使用してajaxリクエストをプロファイリングして最適化します

于 2012-04-13T19:50:41.990 に答える