C++ 和 PHP 之间的通用桥梁
Generic bridge between C++ and PHP
我们有一个Web应用程序(相当重量级的应用程序),它做一大堆东西,Web UI,数学处理和建模,以及与数据库相关的东西。
PHP中发生的许多过程都非常慢,主要是因为PHP在数学处理方面很糟糕。
将来,我们希望打破这些缓慢的过程,并用更快的速度重写它们,可能是C++,或者可能是Java。
有谁知道一种通用的方法,可以将数据传入和传出PHP并进入另一种语言的环境? 我已经考虑过将内容序列化为 JSON 并将它们铲入/dev/shm 或套接字,然后让其他语言侦听套接字,或查看共享内存位置等。
这种东西对于本机类型来说效果很好,但是当你考虑到很多传递的东西实际上是类实例和类似的对象时,确实很糟糕。
我不确定一个明智的解决方案,但我一直在考虑纯Java的Quercus PHP实现,以及PHP/Java桥。
但是,我一直无法为C++找到任何可以执行类似功能的东西。 编写PHP模块是可能的,但我正在努力了解它如何足够通用,而不仅仅是将每个新(和一些旧)脚本重写为模块,然后在PHP中调用这些函数的情况。
Google 协议缓冲区
协议缓冲区
这是什么?
协议缓冲区是一种以高效且可扩展的格式对结构化数据进行编码的方法。Google 将协议缓冲区用于几乎所有内部 RPC 协议和文件格式。
<尾引号>尾引号>
它支持对用.proto
语言定义的对象进行快速高效的序列化,并支持本机C++/Java,以及带有第三方附加的PHP。
看看 Gearman: http://gearman.org/
它适用于C和PHP,以及其他语言。不过,它没有明确说明C++:(
除了用作网桥之外,它还可以用作负载平衡器并提供系统冗余。
我自己没有用过,但它似乎很棒:)
编辑:Gearman会要求你序列化数据,所以在这方面有一个减号。
我们目前正在使用 zend framework 来调用 php 代码中的C++库。这可能是您正在寻找的。
干杯!
我最近偶然发现了Hiphop优化器。Facebook使用它,它可能正是你所需要的,尽管我不能从经验中说话。https://github.com/facebook/hiphop-php/wiki/
看看它是否适合您的需求:)
我刚刚完成了"PHP 文件对象"的开发,它是一个第 10 层组件的 Vettrasoft Z 目录。此对象允许调用 PHP 代码的"预处理",嵌入到文档中,来自C++程序。应用程序代码看起来会有所作为喜欢这个:
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 桥"。它今天刚刚通过了阿尔法并将包含在下一个版本 (ZP9/b13) 中 - 大约 7 月中旬。一位朋友指出了这一点在 stackoverflow.com 的帖子中,读到这篇文章让我瞠目结舌,因为时机如此之大巧合。
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- php和c++中数字格式/浮点之间的区别
- C 和现有PHP应用程序之间的通信
- 如何通过套接字在PHP和C++应用程序之间进行通信
- 使用编译代码和 PHP 加速器来提高性能之间的差异
- php 和 (exe) C++控制台应用程序之间的通信
- PHP 和 QT 之间的共享内存
- PHP和C++可以在彼此之间传递数据吗
- C++面向对象程序和PHP面向对象程序之间的区别
- 在c++和php中的程序之间传递大数据
- 如何在Windows上实现c++和PHP之间的通信
- 如何使用c++和PHP在客户端和云服务器之间正确存储时间戳和偏移量
- PHP和C++之间的安全套接字通信
- C++ 和 PHP 之间的通用桥梁