5

我从PHP exec() 性能中了解到,运行 exec() 会产生开销,但在大型程序或网站中,将后端的一部分用另一种语言编写并让 PHP 使用 exec 调用程序不是有益的吗?

例如,我编写/运行了一个包含大量字符串操作的测试——PHP 用了 2.3 秒,而 Java 用了 0.52 秒,C++ 用了 0.33 秒。速度差异已经很明显了。如果我多线程操作,时间可能会更快。我还发现并行性可以通过类似的东西来实现

exec("./largeoperation > mydir/$dirname.data &"); 
//or
exec('java Backend > /dev/null 2>&1 &');

有了所有这些好处,除了需要用另一种语言编写代码之外,我不明白为什么我不应该将后端的更多部分委托给用另一种语言编写的更快的程序。另外,我知道存在像Working with Php-Java Bridge这样的桥,但我不确定使用它是否会比简单的 exec() 快得多。有没有人有更多关于 exec() 的细节?

4

1 回答 1

4

虽然您可以使用exec和朋友将工作分配给其他程序,但您尝试做的事情最好使用消息队列系统来完成。一个设计良好的消息队列可以让你用你需要的任何语言编写工作程序。当您需要用另一种语言、环境或服务器做某事时,它们是一个很好的解决方案。

很多消息队列,但我是Gearman的忠实粉丝。它是由为我们带来 memcached 的同一个人构建的。看看PECL 扩展

于 2013-01-12T03:37:54.703 回答