用 PHP 编写套接字服务器是个好主意吗?

Posted

技术标签:

【中文标题】用 PHP 编写套接字服务器是个好主意吗?【英文标题】:Writing Socket Servers in PHP is it good idea? 【发布时间】:2011-01-11 15:38:09 【问题描述】:

使用 php 编写 Socket 服务器是个好主意吗??

这里是如何撰写文章: http://devzone.zend.com/article/1086

问题:

与用其他语言(如 c、c++、python、..)编写套接字服务器有什么不同?

安全性如何?

速度?

“套接字服务器通常作为服务或守护程序连续运行。”

php 继续运行??它会工作几天、几周、几个月吗?

有什么更好的方法?

我需要php应用程序可以连接和发送、接收数据的服务。

【问题讨论】:

你在做什么?我以前用 PHP 编写过套接字服务器。他们工作得很好。但是不要指望任何形式的并发(我将它用作分布式系统的主人,孩子们会不时签入)。它可以工作,但不要期望将其用于生产质量用途。那么,你的用例是什么?你到底想做什么,你不知道 PHP 是否适合?但总的来说,您可能会发现 C/C++ 或 Python 更合适(如果只是为了支持线程)。同样,这取决于您的需求(您尚未提及) 我需要可以通过套接字接收数据的服务,在 linux 上, 简单地说我需要通过套接字连接到服务器的api 你真的需要更有表现力!重复“sockets”这个词没有帮助(: @Eddsstudio,如果您熟悉 C++ 和 Boost,并且如果您只需要“通过套接字连接到服务器的 API”,请查看 Boost.Asio 库 (boost.org/doc/libs/release/doc/html/boost_asio.html)。 【参考方案1】:

编写一个长时间执行的(非平凡的)PHP 程序通常不是一个好主意。这是因为它的内存管理在很多方面都存在缺陷,特别是它无法释放循环引用的结构。其他一些物体也会泄漏。例如http://uk.php.net/manual/en/function.create-function.php 分配了一个永远无法释放的函数;在循环中调用它,你最终死了。在其他语言中,可以创建被垃圾回收的函数对象。

但是,如果你小心并正确地测试它,可以用 PHP 编写简单的服务器,你只需要避免做任何导致它泄漏内存的事情;在一个简单的小程序中,它们中的大多数都很容易避免。

【讨论】:

以上是关于用 PHP 编写套接字服务器是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

存储图形对象是个好主意吗?

在 RMI 服务器中执行启动 rmiregistry 是个好主意吗?

同时读取多个文件是个好主意吗?

在庞大的数据集上使用 IN 是个好主意吗?

在使用 django 和 react 时,用 apollo 和 graphql 替换 redux 是个好主意吗?

在 Scala 中为我们的类创建隐式类是个好主意吗[关闭]