2

多くのPHPページを実行するための最速の方法は何ですか。それらを表示する必要はありません(つまり、出力されるhtmlから情報を取得または保持する)が、ロードする必要があります。各ページ内のPHPコードを実行する必要があります。

私は最初にやり始めましたforeach (...){echo <iframe src=....非常に醜く、非常に長く、非常に悪い考えを取りまし

今、私はajaxリクエストをロードし続け、配列を通過するようにjqueryタイマーを設定することを考えています。

これについてもっと良い方法はありますか?

4

4 に答える 4

1

次のことができます。

<?php

$pages = array();

$pages[] = 'page1.php';
$pages[] = 'page2.php';
$pages[] = 'page3.php';
$pages[] = 'page4.php';
$pages[] = 'page5.php';

foreach($pages as $page):
    include $page;
endforeach;
?>
于 2012-10-10T00:49:16.253 に答える
1

マルチスレッドを使用すると、複数の読み込みを同時に実行できるため、できるだけ速く URL を呼び出すことができます。PHP は実際にはマルチスレッドを適切にサポートしていませんが、マルチプロセッシングを実行させることはできます。これにより、URL リクエストを開始すると、ページが読み込まれるのを待つことなく、すぐに次のリクエストを開始できます。

次のコードは、wget を使用してこれを実現する方法の例です。これは高速ですが、成功または失敗について通知しないという欠点があります。

<?php
foreach($pages as $page){
    exec('/usr/bin/wget '.$page.' > /dev/null 2>&1 &');
}
?>

これをさらに一歩進めて、wget の代わりに独自の php スクリプトを呼び出すことができます。その場合、プログラムはロードに失敗した URL をログに記録できます。

したがって、完全な例は次のようになります。

run.php

<?php
foreach($pages as $page){
    exec('loadPage.php '.$page.' > /dev/null 2>&1 &');
}
?>

loadPage.php

<?php
$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($argv[1]);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpdCode != '200'){
    $fp = fopen('error.log', 'w');
    fwrite($fp, 'The URL '.$url.' had an issue. It returned a '.$httpCode.' error.');
    fclose($fp);
}
?>
于 2012-10-10T01:10:19.487 に答える
1

私の理解との違いは最小限ですが、 foreach は最も遅いタイプのループです。あなたの本当の問題は、悪名高いほど遅いiframeです。あなたがすべきことは include(); です。またはrequire(); またはrequire_once();

$pages = array();
$pages[] = "Page1.php";
$pages[] = "Page2.php";
$pages[] = "Page3.php";
foreach($pages as $page)
{
require($page);
}

iframe は実際にはサポートを中止する予定であると思われるため、使用しないでください。それらを特定のスタイルまたはスタイルで表示する必要がある場合は、CSS を使用して iframe を使用していたときと同じように配置しますが、代わりに div を使用します。

これが役立つことを願っています。

于 2012-10-10T01:01:05.430 に答える
0

これまでで最も効率的なのは、スレッド化することです...

http://pthreads.org

http://docs.php.net/manual/en/book.pthreads.php

http://pecl.php.net/package/pthreads (最新リリースは含まれていません。できれば git )

コードが複数のページ ( local であると想定) に含まれている唯一の理由は、これが PHP で同時実行を実現する唯一の方法だったからである可能性が高いと思います...それが正しい場合は、コードを次のように書き直す必要があります。同時実行のためにサーバーを必要としなくなりました。それらが異なる物理マシン上の外部サイトであっても、リクエストをスレッド化することはやるべきことです...あなたもできます

http://pthreads.org/pool.php

とても簡単です

http://pthreads.org/pool.phps

于 2012-10-11T07:32:09.693 に答える