6

私が行っているfgetsいくつかのバッチデータベース呼び出しに対するサーバーの応答を取得するために使用することによって生成される遅延に、いくつかの実際の問題があります。

私は、たとえば 10,000 回の呼び出しのバッチを送信しています。各呼び出しの応答を取得する必要があるため、アプリケーションの速度を遅らせる fgets までの遅延を追跡しました。

問題をよく説明しているこのスレッドhttp://bugs.php.net/bug.php?id=32806freadを見つけましたが、彼はサーバーの応答ではなくファイルを読んでいるので、私が参加できるので少し難しいかもしれません次の行の、そして私が望まない余分なもの。

私の質問は、fgets の代わりにサーバーからの応答を読み取るための最良/最速の方法は何ですか?

4

2 に答える 2

1

file_get_contents(または、ストリームがある場合はstream_get_contents)は、サーバーの応答を読み取るための最速の方法です。データを取得する最も速い方法ですが、fgetsがメモリに複数の行を保持する必要がないのに、すべてのファイルを一度にメモリに読み込むため、メモリ使用量を調べるときに最も無駄な方法であることがよくあります。

freadも使用します。これは、fgetsよりも高速で、定義可能な特定のサイズのチャンクでファイルを読み取ります。

データを行ごとに読み取ることに依存している場合は、file_get_contentsよりも低速ですが、ファイルの行を含む配列を提供するfile()を使用できます。

より良い答えを与えるために-すでに上で述べたように-、私たちはより多くの情報を必要としています。

于 2010-04-27T21:35:46.723 に答える
0

ここでは十分な情報がありません。

おそらく、何か他のものからデータを読み込むために fgets を呼び出す PHP をどこかで実行していることを意味していると思われますが、他の何かとは何ですか? あなたはそれがファイルではないことをほのめかしています - それで、それは何ですか? ローカル番組?パイプ?ネットワークソケット?ウェブページ?…他に何か?

別のツールを使用すると、より速く読み取ることができますか? 何を試しましたか?実行しているオペレーティング システムは何ですか? netcat などを実行するためのシェル アクセス権はありますか?

また、あなたが言及している「バグ」が主に帯域幅に対処している間、ラグについて話している。

問題について詳しく知らなければ、解決策を提案することはできません。

C.

于 2010-04-19T21:37:57.620 に答える