使用PHP解释器代替JavaScript v8实现node.js的可能性?

时间:2011-06-06 02:57:44

标签: php rest soap node.js

我有一个用PHP开发的命令行应用程序,它目前利用文件和数据库内容进行输入。我需要更多的通用互操作性,偶然发现了Node.js.我看到它可以让我快速创建一个RESTful或SOAP接口,只需很少的工作就可以在前端进行扩展。

知道它是用C语言编写的并使用JavaScript V8我想知道是否有任何想法已经被用于执行node.js的并行实现,例如node.php? PHP开发人员将获得此框架的奇迹,当然,我可以立即利用对当前代码库的有限更改。

这种实施的可行性,可行性和潜在挑战可能是什么?如何植根于Node.js中的JavaScript引擎并且可以轻松地用PHP引擎替换它?

6 个答案:

答案 0 :(得分:5)

如果您感兴趣的是“在PHP中快速创建RESTful或SOAP接口”,那么您可能会看错方向。

不是在PHP中寻找V8 + node.js的重新实现,而是有许多现有的PHP框架提供类似的抽象。请参阅:http://www.noupe.com/php/discussing-php-frameworks.html

答案 1 :(得分:4)

我也接受了类似的想法,但我的结论不是最好的:

  • 我的基准测试(简单循环)中的node.js似乎比PHP快得多(+ 10x)
  • 可以完成基于PHP的Web服务器(some projects already存在)
  • 默认情况下,PHP不是非阻止的(虽然它可以与streamslibevent等扩展名一起使用)

我的结论是:如果你让libevent正确地使用文件句柄/流并在它周围编写一些包装器,你可以拥有与node.js非常相似的东西,而不是在性能方面。另外,另一个重要的结论是:当涉及垃圾收集器时,PHP并不是那么好,因此将PHP脚本永远作为HTTP守护程序运行可能不是一个好主意。

答案 2 :(得分:1)

我看到的最大挑战是node.js使用基于事件的v8引擎架构,而php则没有。

答案 3 :(得分:1)

我之前没有尝试过,但您可以尝试http://nanoweb.si.kz/

另外,其他人建议将这个内置到php: https://wiki.php.net/rfc/builtinwebserver

答案 4 :(得分:0)

PHP已经附带命令行解释器(CLI),为什么会有其他东西? Node.js不能是别的东西,Javascript不是PHP;他们不共享相同的构造,他们没有相同的范例,Node.js填补了在服务器端和客户端使用Javascript的差距...... PHP不存在哪个差距。

但是你指的是让PHP监听HTTP请求,还是像Node.js一样?在那个案例中,这不会像Node.js那样运作良好。您仍然可以找到一些项目,例如Arend的答案建议,或者使用一些其他PHP类/框架来监听HTTP连接并处理它们......但项目不会接受。 IMO。

答案 5 :(得分:0)

感谢所有为此主题做出深入贡献的人:)

总结我从以上所有讨论中理解:

1。)PHP中缺少事件驱动的行为使得在异步中利用它成为一项挑战。 Node.js中使用的非阻塞IO模式

2.。)如果可以在PHP中有效地支持事件,那么实现像“Node.php”这样的东西的行为不仅仅是一个rip和替换引擎,因为很多基本功能实际上是JavaScript编写的在C代码之上(例如http,控制台,日志,网络流等)

3.)缺乏一流的功能使得提供相同的语法和方法成为一项挑战。

注意:我使用术语语法,因为我知道PHP中有一个回调语法,我认为可以使用它而不是一流函数,但不会优雅地流动。

4.。)JavaScript v8的性能特征证明比PHP更高效。

再次感谢所有精彩的回复!我在原型设计时选择使用PHP纯粹是权宜之计和经济学。如果在项目启动时我已经取消了Node.js,我会从一开始就考虑JS。当我现在从原型转向生产时,我必须决定移植到Node.js,纯C ++或类似Erlang或Scala之类的东西。我前面还有很多问题和决定:P