0

ページは本当に速くロードする必要がありますが、DB は遅いので、2 つの db 呼び出しに分割します。自体。

しかし、次に 2 番目のリクエストを実行する必要があり、最初のリクエストが実行されるたびに常に実行する必要があることがわかっています。ページの最初の部分には、http リクエストを起動するスクリプトが含まれており、db 呼び出しを行い、最後にロードします。

しかし、これは一連の操作です。つまり、ページ読み込みの最初の部分では、db を終了し、http を返し、ブラウザでレンダリングし、スクリプトを実行し、http を要求してから db を待ち、最後にページ全体を返す必要があります。

これをPHPでどのように解決しますか?memcache がなく、fifo を調べましたが、posix_mkfifo 関数もありません。

最初のリクエストで 2 つの db 呼び出しを行い、最初のリクエストとページの一部を処理し、2 番目の db 呼び出しを実行し続けます。終了したら、/tmp/ またはバッファーまたはどこでも高速に保持したい - メモリ内-そしてスクリプトがそれを要求するとき-おそらくスクリプト http req はそれをもう少し待つ必要があります.おそらくそれは幸運であり、すでにメモリから提供されます.

しかし、リクエストと php インスタンスの間で、メモリのどこにそれを保持していますか? グローバルでも、セッションでも、memcached でもありません。どこ?ソケット?? フォークしてパイプする必要がありますか?

編集:ありがとう、みんな。two-async-http-requests ルートを使用しました。

4

2 に答える 2

1

AJAX を使用できると思います。ページの読み込みによってトリガーされる、SQL クエリごとに 1 つずつ、2 つの JavaScript AJAX 呼び出しを含む HTML ページを初めて送信します。次に、それらの結果でページを非同期に読み込みます。

于 2013-09-25T14:19:29.517 に答える
1

問題は、memcache のような追加のソリューションなしで解決するには問題が複雑すぎることです。PHP の Direkt では、短いデータをSHMに保存できます。しかし、それは最善の解決策ではありません。

最善の解決策は、より良いデータベース構造を構築して、データベースからより良い結果とより速い応答を得ることです。

データベースのパフォーマンスを向上させるには、MySQL メモリ テーブルを参照してください。ただし、再起動後にテーブルがクリアされることに注意してください。したがって、テーブルにキャッシュ用のデータを入力できます。

また、Ajax を使用すると、一度に複数のリクエストを送信できます。

于 2013-09-25T14:19:58.247 に答える