php - 用 PHP 编写的 SSI 解析器?

标签 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 解析器吗?当然,我也愿意接受在我概述的限制条件下工作的其他解决方案。

非常感谢您的宝贵时间。

最佳答案

看看 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 性能更好...

关于php - 用 PHP 编写的 SSI 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952725/

相关文章:

javascript - 是否可以将 SSI 插入 PHP 文件中的 javascript 中?

php - 以纯文本形式生成某个 PHP 类的所有公共(public)函数?

PHP 到 ASP.NET - call_user_func() 等效吗?

php - 已将数据插入 MySQL 数据库,但字段为空

java - tomcat 上动态 URL 重写的性能方式

linux - htaccess 规则在 httpd.conf 中工作时不起作用

javascript - SSI 导航栏,突出显示所选选项

php - 如何维护各国时间戳

php - URL 重写和构造指南

javascript - 如何 SSI 包含变量文件名