需要帮助PHP套接字服务器!

时间:2011-07-23 15:13:43

标签: php sockets scale

您好我正在编写套接字服务器,目前我有2个选项

  1. 使用PHP

  2. 使用C ++


  3. 我需要知道的是,它们中的哪一个更可靠和可扩展。在搜索谷歌后我发现很多C ++可以照顾我的Scale需求但事情是C ++需要更多编码然后PHP而且在C ++上部署有点困难。

    PHP听起来很有前途(因为SQL和SOCKETS的原生API也更容易在跨平台上部署)但我不知道基于PHP的服务器的可扩展性。目前我想支持至少1k - 2k并发连接。 PHP可以承担这个负载吗?

    还有什么方法可以在PHP中实现多线程(这样我就可以在2个或更多线程上分配工作负载,而不是1个重载线程,保存所有用户和请求)。


    需要包含我的服务器是基本机器。

    处理器:AMD Sempron 3000 +

    RAM:2 GB

    HDD:80 Gigs

    我计划在一段时间后转移到更快的服务器。

    提前致谢。

4 个答案:

答案 0 :(得分:0)

我不会使用PHP。 PHP没有内置的多线程支持。使用C ++或Java。

答案 1 :(得分:0)

PHP没有多线程,2k客户端将“杀死”单个脚本。

C ++很好,对于很多(轻量级)任务而言,带有epoll多路分解的单个线程是最快的方式,如果没有,有预先线程(比如带有线程的prefork buth),只有当一个处理器核心没有时才需要fork能够满足所有要求。使用状态机编写套接字代码,以便您可以使用不同的实现并在单线程和多线程行为之间切换。

答案 2 :(得分:0)

在Java上你有Netty和Mina

答案 3 :(得分:0)

PHP绝对是一个糟糕的选择 - 没有线程 - 您的基本架构将是fork()每个连接的进程。不好玩。

C ++可能是要走的路,尽管你可能会使用其他解释语言并对其进行评估。

在承诺用C ++写东西之前,我当然会考虑一个事件驱动的服务器端javascript方法(参见http://nodejs.org),或者可能是python(twisted?)或ruby-based。