用PHP编写的SSI解析器?

Ric*_*shi 6 php apache ssi

好吧,这可能听起来有点疯狂,但在这里忍受我一分钟.

我正在开发一个标准是使用SSI来包含页眉,页脚和菜单的网站.包含的文件使用SSI条件来处理不同的浏览器,一些#include嵌套,以及一些#set/#if技巧来突出显示菜单中的当前页面.换句话说,它不仅仅是SSI中的#include指令.

我确信有些人可能会对美学产生争论,但对于静态HTML来说,它确实很有效.

现在,问题是:我想从我的PHP脚本中"#include"相同的SSI解析的页眉和页脚html文件,从而避免代码重复并仍然保持网站的统一外观.如果PHP在通常的mod_php环境中运行,我可以通过使用PHP的virtual()函数来做到这一点.不幸的是,该站点使用FastCGI/suexec来运行PHP(这样每个VirtualHost可以作为不同的用户运行),这会破坏virtual().

我一直在使用我在PHP中编写的一个相当简单的SSI解析器(它处理#includes,以及一些非常简单的#if语句),但我想要一个更通用的解决方案.所以,在我开始编写一些可能有问题,更完整的SSI解析器之前,有没有人知道用PHP编写的完整SSI解析器?当然,我也对在我所概述的限制下工作的其他解决方案持开放态度.

非常感谢你的时间.

Ale*_*omé 2

看看 ESI: http: //en.wikipedia.org/wiki/Edge_Side_Includes

您可以创建一个 PHP 代理来处理它们,它是 Symfony2 中的 HttpCache : https: //github.com/fabpot/symfony/blob/master/src/Symfony/Component/HttpKernel/HttpCache/Esi.php

或者使用像 Varnish 这样的 HTTP 代理,比 Symfony2 性能更高......