我有一个需要在C++库中调用函数的PHP Web应用程序。这个库是由供应商提供的(在Linux机器上是libfoo.a)。从PHP Web应用调用C++库:system()vs SWIG PHP extension?
我的第一反应是创建一个C++可执行针对libfoo.a链接,并通过命令行参数的函数。 PHP web应用程序然后可以对我的C++可执行文件执行system()调用。这将很容易实现。我担心的是,是否会为每次调用创建新的系统进程会增加很多开销。这个开销是多少?
另一种方法是我可以使用SWIG将C++函数包装到PHP扩展中,但我没有C++源代码。 SWIG支持与“.a”库链接吗?它是否需要我团队中的其他工程师更改其PHP配置以构建libfoo.a?
如果系统的开销()调用小(< 30毫秒),我宁愿选择#1,因为它似乎要简单得多,一旦创建C++可执行文件,它不建立到PHP应用。你对这两种选择有什么建议?
你是否需要'C++'输出?如果不是你可以考虑推动呼吁背景 - http://stackoverflow.com/questions/45953/php-execute-a-background-process – ajreal 2010-11-11 20:11:49
只是一个简单的外部观察,但不知道多久会被称为,它听起来你会更好地制作C++可执行文件(这将允许在PHP之外使用作为奖励)。如果你把它扩展成PHP扩展,那么我认为即使只是一个小型的私人用户群,你也不可避免地面临分发和兼容性维护的噩梦。自从你打开这个问题以来,你有没有试过或发现过什么? – 2011-04-05 22:29:26