我的PHP脚本中有很多数学计算,有时会相当缓慢。 我想知道是否可能将数据从PHP传递到C++,在C++中进行计算,然后将结果传回PHP?
附注:我不太擅长C ++。
您可以编写一个PHP模块, 这是一段暴露新的内置函数给PHP解释器的C代码。这比通过exec()
启动第二个进程要快得多。
然而,这样的模块很难编写,构建工具很笨拙,并且在PHP和C之间传递参数需要非常小心地处理内存分配和引用计数。此外,C不是C ++,因此您需要在C ++代码周围添加一个extern C
层,以将函数导出到PHP中。(否则,请改用C而不是C ++编写扩展程序。)
因此,除非您的速度要求真的非常严格,否则最好使用exec
或proc_open
,并通过文件指针来回传递数据。这就像编写从标准输入读取并输出到标准输出的C ++程序一样。
https://github.com/facebook/hiphop-php/wiki/
https://github.com/facebook/hiphop-php/wiki/Running-HipHop
我个人从未在实际项目中使用过它,但我听说很棒。
exec
命令(或类似命令)来执行它。可以做到:
PHP 可以在服务器上运行命令。
对于 WINDOWS 和 LINUX 系统,这个过程是不同的。
对于 Windows,请查看以下链接
对于 Linux:
我尝试使用了这个过程,并且有一些成功了。
还有一件事情是你也可以获取结果。
对于 *ux 系统,您可以在例如 Apache 中将 C++ 应用程序作为 CGI 脚本启动。
Apache: C/C++ script(根据此参考资料,它也可能在 Windows 上可用)。
在这种情况下,您只需将 HTML 表单设置为在 CGI 脚本上进行提交(例如)。
我已在 Linux 和 Apache 2 上进行了测试,通过 HTTP 进行协调非常容易。
有一些可用的 C(++) 客户端库 https://github.com/kr/beanstalkd/wiki/client-libraries 与 Beanstalkd 相关。
exec
具有该功能。 - chris