【问题标题】:Client and PHP backend communication: Sokets, Stream, TCP/UDP?客户端和 PHP 后端通信:Sokets、Stream、TCP/UDP?
【发布时间】:2012-04-13 04:35:30
【问题描述】:

短版: 我想将客户端连接到 PHP 服务器,但我的服务器限制了同时运行 10 个 PHP 脚本。

问题是:在不受限制的情况下,用 PHP 脚本连接客户端的最佳方式是什么?

加长版:
我之前的问题显示了我真正追求的是什么,但又是这样:
我想开发一个使用 Java 小程序作为客户端,PHP 作为后端服务器的网络聊天。在正常情况下,我不会问这样的问题,只需使用谷歌在我的搜索中弹出的第一件事。但现在我不是在正常情况下,而是受到限制:服务器使用,如在我的托管中是共享帐户托管,以及 10 个入口进程(也就是同时运行的 PHP 脚本的数量。)我需要做一个考虑到这些,服务器到我的聊天中,并尽可能降低性能。

我确实在 Delphi 中使用 TCP 开发了客户端/服务器连接,但那是很久以前的事了,我忘记了很多。现在我尝试重新提出它,我意识到我对此并不了解。

根据我的研究,我有几个问题:

什么是套接字?
我确实对此进行了护目镜,但我没有找到一个非常明确的答案。这是两个程序相互通信的标准方式吗?这可能是我的错误知识之一......

TCP/UDP 协议是 Sockets 吗?
我什至不知道如何解释我的这个问题......

究竟什么是流?
我从我的 C++ 知识中知道的是它能够以二进制形式打开文件,并从任何点读取它。我可能错了,因为我的 C++ 知识太老了。

我还阅读了有关 PHP 套接字的信息,我发现它能够使用 socket_create_listen 侦听端口,但 我担心这个脚本是否会主动运行?像不定式循环?我问这个是因为 10 个进程的限制。
如果我与客户端启动 TCP 连接,脚本是否会再次无限循环运行? 它是否依赖于活动进程?

我知道 UDP 不需要活动连接,因为它只是集体发送它而忘记了它在结束时终止脚本,但我不知道 TCP。

很抱歉这篇文章很长,还有很多问题,感谢您提供的任何帮助。

编辑:我忘记了 GET/POST 方法! 正如我所说,我正在计划一个网络聊天,他们需要进行通信,但除了直接连接之外,还有 GET/POST 方法,脚本快速执行并终止脚本,但同样是 10 个进程限制,当 11 个进程试图同时运行时会发生什么?

还有没有办法限制同时运行的进程?还是排队等待其他人完成?

【问题讨论】:

  • 签约更好的托管服务器。 Hostgator.com 在入门计划中最多同时接受 25 个进程。

标签: php sockets tcp stream udp


【解决方案1】:

如果您的服务器仅限于 10 个并发线程,这是一个硬性限制,您无能为力。你能做的就是让请求尽可能的小,尽可能少的事情由 php.ini 解决。所以并发的可能性会很小。

理想情况下,您的所有 php 都将快速启动和退出,通常会将用户重定向到静态内容(html、js、img 和 css 文件)。

也许你可以让你的整个 webapp 有很多 html 文件,并有一些 ajax.php 文件用于服务器通信......

【讨论】:

  • 是的,我知道它非常有限,但我想使用它,因为它的经验。也忘了再问两个问题,我刚刚做了。
  • 我仍然认为某种“api”可以解决您的问题。但是我不知道你的问题是否可行。我认为如果您可以在准确或不到一秒的时间内完成 10 个请求,您的问题就解决了。但是,如果所有这些都需要 1 秒并且其中一个需要超过 1 秒,则这是不可能的。所以限制并不真正在架构上,....也许这个问题不可能解决你定义它的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 2011-09-05
  • 2012-04-19
  • 1970-01-01
  • 2017-07-16
  • 2011-07-31
  • 2013-11-23
相关资源
最近更新 更多