朋友们,你好吗?
我有以下问题。
我有几个包含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代码直接捕获到内存中。
提前问候,非常感谢你的帮助。
答案 0 :(得分:1)
是的,有办法将php代码缓存在内存中,而不是每次从磁盘读取它。阅读一些关于PHP Opcode缓存的内容,如
也有一些不同的项目(比如XCache,检查PHP加速器的维基)。他们可以加速PHP,但你需要一个root权限来安装它们(它们是一个PHP模块)。如果你没有自己的/专用服务器,你可以忘掉它;(
缓存PHP文件没有不同的方法(直接在php中)。您只能缓存生成的html输出。