繁体   English   中英

C ++和PHP之间的通用桥梁

[英]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协议缓冲区

协议缓冲区

它是什么?

协议缓冲区是一种以高效且可扩展的格式编码结构化数据的方法。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM