2016-07-22 9 views
0

私たちはさまざまなWordPressプロジェクトを持つ約20のテストサイトを持っており、私はブログの名前だけを取得し、それを私たちが使用する内部サイト情報の束。ヘルプが必要PHPスクリプトの最適化テストサイトのサイト名

<?php 
libxml_use_internal_errors(true); 
$c = file_get_contents("http://test1.company.com"); 
$d = new DomDocument(); 
$d->loadHTML($c); 
$xp = new domxpath($d); 
foreach ($xp->query("//meta[@property='og:site_name']") as $el) { 
echo $el->getAttribute("content"); 
} 
?> 

これは、すべての20のサイトから情報を取得すると、設定がうまくいくだけで非常に遅くなります。私はその情報を引き出す方法を最適化する方法があるかどうか疑問に思っていましたか?

+0

HTMLの解析は高速ではありません。あなたはこれがより速く進むように、馬力の多いサーバーを手に入れたいと思います。 –

+0

実際にどれを最適化する必要があるかを知るためには、実行するコードの長さを測定する必要があります。 – Jocelyn

+0

あなたがたぶんhtmlがフェッチされていない限り、file_get_contents()呼び出しが最も遅いビットであることがわかります。あなたのインターネットパイプをアップグレードしない限り、f_g_cをスピードアップするためにあなたができることは何もありません。 –

答えて

1

new DomDocumentでドキュメントを読み込むのが遅くなります。あなたが誰かにあなたのために本を覚えていることを伝えているとしたら、本当に気になるのはページのタイトルです。あなたはすでに答えを得ることができる何かのために多くの仕事をしています。

生の文字列としてコンテンツを受け取ったときに、preg_matchを実行して値を取得すると、特にog:site_nameメタタグの一部であることがわかってからかなり高速になります。

こちらがお役に立てば幸いです。

更新

また、私はさらに一歩それを取ると、あなただけは、文書全体に引っ張っていないので、最初の1000文字を取得します。正規表現の検索を行っているので、すべてのXML解析をバイパスすることができます。

さらに詳しい情報が必要な場合は、おそらくドキュメント全体が引き込まれている可能性があります。

は、ここで最初の1000個の文字を取得する例を示します

file_get_contents('./people.txt', NULL, NULL, 0, 1000);

最後の2つの引数がoffsetmax lengthです。最初の文字(0)から始まり、1000バイト/文字のみを取得したいとします。

+0

私は非ローカルファイルをオフセットすることはできないと思いますか? – Enigma

関連する問題