快速执行许多PHP页面数组的最快方法?

时间:2012-10-10 00:45:29

标签: php jquery

执行许多PHP页面的最快方法是什么。我不需要看到它们(即从任何输出的html中抓取或保留任何信息),但它们需要加载。每个页面中的PHP代码都需要执行。

我第一次开始做foreach (...){echo <iframe src=....非常丑陋并且非常长而非常糟糕的主意

现在我正在考虑设置一个jquery计时器来继续加载ajax请求并通过一个数组。

还有更好的方法吗?

4 个答案:

答案 0 :(得分: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;
?>

答案 1 :(得分:1)

尽管与我的理解差别很小,但foreach是最慢的循环类型。你真正的问题是iframe他们出了名的慢。你应该做的是一个include();或要求();甚至require_once();

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

避免使用iframe,因为我相信他们实际上计划支持他们丢弃。 如果你需要它们出现一个特定的风格或风格,只需使用CSS来定位它们当你使用iframe但在其位置使用div时的方式。

我希望这会有所帮助。

答案 2 :(得分:1)

多线程可让您尽快调用URL,因为您可以在同一时间进行多次加载。 PHP并没有真正支持多线程,但我们可以让它进行多处理。这将允许您启动URL请求并立即启动更多,而无需等待任何页面加载。

以下代码是如何使用wget完成此操作的示例。这将是快速的,但确实有一个不让你知道成功或失败的缺点。

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

这可以更进一步调用你自己的php脚本而不是wget。在这种情况下,您的程序可以记录无法加载的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);
}
?>

答案 3 :(得分:0)

到目前为止,最有效的做法就是线程......

http://pthreads.org

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

http://pecl.php.net/package/pthreads(如果可以的话,不包含最新版本,git)

我认为很可能代码包含在几个页面中的唯一原因(我认为是本地的)是因为这是在PHP中实现并发的唯一方法...如果这是正确的那么你很可能会重写代码,因为您不再需要服务器进行并发。即使它们是不同物理机器上的外部站点,也可以通过线程处理请求......您甚至可以

http://pthreads.org/pool.php

而且太容易了

http://pthreads.org/pool.phps