在运行之前预加载php代码

时间:2014-01-15 16:36:41

标签: php domdocument

朋友们,你好吗?

我有以下问题。

我有几个包含php代码的文件,这些文件分别构成一个网站,实际上每个文件生成不同的html代码段,就像之前可以在执行之前捕获php代码一样。

我正在阅读每个文件并创建一个包含每个文件所有代码的新文件,但我想知道在运行之前是否还有其他方法可以将php代码直接捕获到内存中。

我尝试过使用ob_输出缓冲区,但是我返回了已执行的代码(html)。

Control类如下:

class IndexCtrl extends CtrlAbs {
    public function show () {
        $template = new Template ( $this->template );
        $template->load ();
        $indexVst = new IndexVst ();
        $indexVst->load ();
        $phpJoined = JoinPhp::getInstance ();
        $phpJoined->setFile ();
        $phpJoined->joinFiles ();
        printf ( '%s', $phpJoined->load () );
        unlink ( $phpJoined->getArchivo () );
    }
}

加载php代码(模板和视图)的类是:

class IndexVst extends VistaAbs {
    public function load () {
        $phpJoined = JoinPhp::getInstance ();
        $phpJoined->addFile ( 'app/web/htmldom/vst/index.php' );
    }
}

class Template {
    public function load () {
        $phpJoined = JoinPhp::getInstance ();
        $phpJoined->addFile ( 'app/web/htmldom/templates/default.php' );
    }
}

包含php代码的文件是:

如default.php

use mod\api\htmldom\HtmlDom;
use mod\api\htmldom\common\Types;

$htmlDom = new HtmlDom();

的index.php

$table0 = $htmlDom->table ();
$table0->border ( '1' );

$tr0 = $htmlDom->tr ();
$th0 = $htmlDom->th ();
$th0->scope ( 'col' );
$tr0->insert ( $th0 );

$tr1 = $htmlDom->tr ();
$td0 = $htmlDom->td ();
$strong0 = $htmlDom->strong ();
$strong0->insert ( 'Convert html to HTMLDOM' );
$td0->insert ( $strong0 );
$tr1->insert ( $td0 );

$table0->insert ( $tr0 );
$table0->insert ( $tr1 );

$htmlDom->body ( $table0 );
$htmlDom->showHtml ();

后两个文件包含生成html代码的php代码。

正如我所说,我的问题是,是否有其他方法可以在运行之前将PHP代码直接捕获到内存中。

提前问候,非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

是的,有办法将php代码缓存在内存中,而不是每次从磁盘读取它。阅读一些关于PHP Opcode缓存的内容,如

  1. APC:http://ca3.php.net/apc/
  2. Zend Opcache:http://ca1.php.net/opcache
  3. 也有一些不同的项目(比如XCache,检查PHP加速器的维基)。他们可以加速PHP,但你需要一个root权限来安装它们(它们是一个PHP模块)。如果你没有自己的/专用服务器,你可以忘掉它;(

    缓存PHP文件没有不同的方法(直接在php中)。您只能缓存生成的html输出。