我不确定是否有一个明智的解决方案,但我一直在考虑 Quercus PHP 实现,它是纯 Java 的,以及 PHP/Java bridge。
然而,我无法找到任何可以执行类似功能的 C++ 工具。编写 PHP 模块是一种可能性,但我很难看出它如何足够通用,而不仅仅是将每个新(和一些旧)脚本重写为模块,然后在 PHP 中调用这些函数。
我不确定是否有一个明智的解决方案,但我一直在考虑 Quercus PHP 实现,它是纯 Java 的,以及 PHP/Java bridge。
然而,我无法找到任何可以执行类似功能的 C++ 工具。编写 PHP 模块是一种可能性,但我很难看出它如何足够通用,而不仅仅是将每个新(和一些旧)脚本重写为模块,然后在 PHP 中调用这些函数。
Protocol Buffers是什么?
Protocol Buffers是一种编码结构化数据的高效且可扩展的格式。Google几乎在其所有内部RPC协议和文件格式中都使用Protocol Buffers。
它支持快速高效地序列化您在.proto语言中定义的对象,并支持C++ / Java本地支持,以及通过第三方插件支持PHP。
int i;
file_o f_in("mytemplate.txt"), f_out("my_output.txt");
rec_dbag_o bag;
phpfile_o my_php (f_in);
for (i=0; i < 9; i++)
{
my_php.process(f_out, bag);
// --do something with 'f_out' (PHP generated output file)--
}
这里的想法是输入文件(如上面的示例中的“f_in”)是一个包含PHP代码(或仅为纯PHP文件)的“模板”文件。生成的输出进入“f_out”[上面]。通常,这将在循环中完成。数据从数据包(上面的“bag”)提供给PHP处理器(数据包是Vettrasoft的替代XML),因此将数据从C++应用程序传输到PHP代码。
与提到的一些替代方案不同,您只需将程序链接到Z目录库即可。但是,它确实需要在同一台机器上具有本地PHP“CLI”[命令行界面]处理器(“SAPI”程序)(如果您可以执行“http://localhost/somfile.php”,则可能已配置PHP)。
实际上,这是Z目录的最新添加,在撰写本文时(2012年6月27日),尚未发布,并且我们将其称为“C++/PHP桥”。它今天刚通过了alpha测试,并将包含在下一个版本(ZP9/b13)中 - 大约在7月中旬。一位朋友在stackoverflow.com上指出了这篇文章,我读到这篇文章感到非常震惊,因为时间如此巧合。
最近我偶然发现了Hiphop优化器。Facebook使用它,这可能正是你所需要的,虽然我无法从经验上说话。 https://github.com/facebook/hiphop-php/wiki/
看看它是否适合你的需求 :)