[英]Generic bridge between C++ and PHP
我们有一个Web应用程序(相当重的一个),可以完成一整套东西,web ui,数学处理和建模,以及与数据库相关的东西。
PHP中发生的许多过程都很慢,主要是因为PHP很难进行数学处理。
在未来,我们希望打破这些缓慢的过程,并以更快的速度重写它们,可能是C ++,或者Java。
有没有人知道将数据输入和输出PHP以及进入另一种语言环境的通用方法? 我已经考虑将事物串行化为JSON并将它们铲入/ dev / shm或socket,然后让另一种语言侦听套接字,或查看共享内存位置等。
这种类型的东西适用于本机类型,但是当你考虑到传递的很多东西实际上是类实例和类似的对象时,它确实很难用。
我不确定一个合理的解决方案,但我一直在考虑Quercus PHP实现,它是纯Java,以及PHP / Java桥。
但是,我一直无法找到可以执行类似功能的C ++。 编写PHP模块是可能的,但我很难看到它是如何足够通用的,而不仅仅是将每个新的(和一些旧的)脚本重写到模块中,然后在PHP中调用这些函数。
协议缓冲区
它是什么?
协议缓冲区是一种以高效且可扩展的格式编码结构化数据的方法。 Google对几乎所有内部RPC协议和文件格式都使用Protocol Buffers。
<endquote>
它支持您以.proto
语言定义的对象的快速高效序列化,并且本机支持C ++ / Java,并且第三方添加PHP。
看看Gearman: http : //gearman.org/
它适用于C和PHP,是一堆其他语言。 它没有显式地陈述C ++ :(
除了作为桥梁工作之外,它还可以作为负载均衡器并提供系统冗余。
我自己没有用过它,但它看起来非常棒:)
编辑:Gearman会要求你序列化数据,所以在这方面减去。
我们目前正在使用zend框架在我们的PHP代码中调用C ++库。 它可能就是你要找的东西。
干杯!
我刚刚完成了“PHP文件对象”的开发,它是Vettrasoft Z目录的第10层组件。 该对象允许从C ++程序调用嵌入在文档中的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 Directory的最新成员,截至本文撰写时(2012年6月27日)尚未发布,我们将其称为“C ++ / PHP桥”。 它在今天通过了alpha,并将在7月中旬的下一个版本(ZP9 / b13)中包含。 一位朋友在stackoverflow.com上指出了这篇文章,由于时机非常巧合,因此对我来说是令人大笑的。
我最近偶然发现了Hiphop优化器。 Facebook使用它,它可能正是你所需要的,尽管我无法从经验中说出来。 https://github.com/facebook/hiphop-php/wiki/
看看它是否适合你的需求:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.