PHP套接字值得吗?

时间:2010-09-12 16:30:14

标签: php flex sockets

我刚刚开始使用套接字与我的Flex应用程序进行通信,因为我需要客户端和服务器之间的快速通信。 我看了一下PHP套接字,但由于PHP没有以这种方式在服务器上运行(你可以,但我觉得它是不受欢迎的)我不确定PHP是否是最好的通信方法使用Flex使用套接字。

我的应用程序需要使用与服务器的快速通信,因为它将包含诸如与其他用户进行私人聊天等功能,以及从服务器远程控制Flex客户端。

我应该在我的情况下使用PHP套接字,还是应该找到备用语言甚至替代套接字?我担心的是我将开始使用PHP套接字,但它无法在负载下应对。使用PHP时,速度也可能是一个问题。

编辑:

感谢您的回答,非常感谢。正如我可以收集的那样,PHP 在使用套接字时是稳定的,但该语言只是设计用于请求/响应环境,正如Benson所说。

感谢Cornel,使用带有套接字的Flex的情况的一个很好的选择被指出为 BlazeDS ,使用Java而不是PHP。

4 个答案:

答案 0 :(得分:5)

通过普通套接字定义自己的协议以实现消息传递和远程通信将花费大量时间 - 即使对于基本消息传递功能也是如此。我的建议是尽可能使用像BlazeDS这样的服务器,你不必重新发明轮子。

是的,理论上如果协议针对您的特定用例进行了优化,您的应用程序将执行得更快,但在开发时间方面会花费您很多。

答案 1 :(得分:4)

实际上,根据我的经验,PHP5套接字非常好。它们是用C语言编写的,内置于​​PHP5二进制文件中,因此它们可以快速运行,而不是在PHP本身中实现。

查看nanoweb和nanoserv:

http://nanoweb.si.kz/

http://nanoserv.si.kz/

作者在使用PHP套接字工作方面做得非常出色,构建了一个功能强大的带有nanoweb的纯PHP网络服务器,以及一个带有nanoserv的PHP 5.1+的完整服务器守护程序框架。

查看nanoserv文档和代码库可能会让您对PHP套接字更有信心。

答案 2 :(得分:3)

PHP几乎可以映射到Linux套接字或类似的东西,所以我认为没有理由这是一个坏主意;因为PHP只是C实现的动态绑定。

http://svn.php.net/viewvc/php/php-src/trunk/ext/sockets/sockets.c,看起来相当合理。

实施,测试和基准。如果它没有崩溃,速度足够快且约束条件合适......那就去吧。

答案 3 :(得分:1)

我还建议使用sockets.io建立node.js。虽然这是最好的,如果你想维持与服务器的开放异步连接。如果您只是在进行同步请求/响应调用,我只会使用http + php。

Php实际上设计用于无共享请求/响应环境。它不适合作为真正的应用程序服务器。 Node.js对此更好一些,但它是JavaScript,因此最好使用json进行序列化。

如果性能非常重要(实时游戏),那么二进制协议是最好的。真的取决于你的应用程序的功能。使用node,它在我的笔记本电脑上的linux vm上json.decode 3k messages / sec。足够快,除了实时游戏。