【发布时间】:2010-11-11 19:38:10
【问题描述】:
我有一个 PHP Web 应用程序需要调用 C++ 库中的函数。该库由供应商提供(Linux 机器上的 libfoo.a)。
我的第一反应是创建一个链接 libfoo.a 的 C++ 可执行文件,并将命令行参数传递给函数。然后,PHP Web 应用程序可以对我的 c++ 可执行文件进行 system() 调用。这将很容易实现。我担心的是是否会为每次调用创建一个新的系统进程增加很多开销。这个开销是多少?
另一种方法是我可以使用 SWIG 将 C++ 函数包装在 PHP 扩展中,但我没有 C++ 源代码。 SWIG 是否支持与“.a”库链接?是否需要我团队中的所有其他工程师更改他们的 PHP 配置以在 libfoo.a 中构建?
如果 system() 调用的开销很小(
【问题讨论】:
-
你需要来自
C++的输出吗?如果不是,您可以考虑将呼叫推送到后台 - stackoverflow.com/questions/45953/… -
只是一个简单的外部观察,但不知道它被调用的频率,听起来你最好制作一个 C++ 可执行文件(这将允许在 PHP 之外使用作为奖励) .如果你把它做成一个 PHP 扩展,我想你将不可避免地面临分发和兼容性维护的噩梦,即使对于一个小的私人用户群也是如此。自从您打开此问题后,您是否尝试过或发现了什么?
标签: php c++ web-applications swig