2012-01-03 14 views
4

私が必要とする情報が最初のものであることがわかっている場合は、外部の(第三者の)HTMLページから特定のデータを収集するプッシュ通知サーバーを作っています。私がMAX_LENGTHを宣言している場合、PHPは実際にはより少ないメモリを使用しますか?とにかく、ページ全体が完全にメモリにロードされていますか?さらに、HTMLページ全体がダウンロードされているか、または制限値に達すると接続が壊れていますか? (そして、データ転送コストを節約する)はPHPのfile_get_contentsメモリとデータ効率が良いですか?

$html = file_get_contents ("http://.....", false, null, -1, 5000); 

ありがとう。

+1

ない答えが、あなたはこの興味深い見つけるかもしれない:http://stackoverflow.com/questions/555523/file-get-contents-vs-curl-what-has-betterを-performance –

+0

ありがとう、私はそれがカールに切り替えると確信した –

答えて

2

はい、それはメモリと帯域幅を節約し...私もちょうどに(この質問に対して完全に密接な関係がないが、有用であり、それが流れを読むのを止めないことを示唆している)速度テストとメモリテストを実行しました実証する。私はピークメモリテストを実行しませんでしたが、少なくともあなたの$ html変数は少ない情報を保存し、メモリを節約します。

Time to get ALL characters of remote page 10 times: 6.0368211269379 
Time to get ALL characters of remote page 10 times: 6.0158920288086 
Time to get ALL characters of remote page 10 times: 5.8945140838623 
Time to get ALL characters of remote page 10 times: 8.867082118988 
Time to get ALL characters of remote page 10 times: 5.7686760425568 

Time to get first ten characters of page 10 times: 4.2118229866028 
Time to get first ten characters of page 10 times: 4.5816869735718 
Time to get first ten characters of page 10 times: 4.2146580219269 
Time to get first ten characters of page 10 times: 4.1949119567871 
Time to get first ten characters of page 10 times: 4.1788749694824 

Memory Useage First 10 characters:40048 
Memory Useage ALL characters:101064 
2

は、ソース、hereを開始hereに次の、そして最後に_php_stream_copy_to_mem機能で終わるを掘り、それは実際にそれが要求された最大長に達すると、ストリームの読み取りを停止しますfile_get_contents()機能のように見えます。

2

はい、フードの下でストリーム機能を使用するため、実際には限界に達すると停止します。また、ドキュメントのページには、

"file_get_contents()は、文字列にファイルの内容を読み取るための好ましい方法です。パフォーマンスを向上させるためにOSでサポートされている場合は、メモリマッピングテクニックが使用されます。

ので、それは実際にあなたが探しブーストを与える必要があります。

関連する問題