【问题标题】:PHP FTP and ajax or similarPHP FTP 和 ajax 或类似的
【发布时间】:2013-01-09 17:18:17
【问题描述】:

我编写了一个 PHP 类,它允许用户与 FTP 服务器交互、连接、更改目录、上传等。接下来我想做的是实时更新服务器上发生的事情, IE。如果他们更改目录,向他们发送一条消息说目录已更改,您现在在 {pwd} 中。

这甚至可能吗?我对我的 PHP 类很满意,但我不知道如何赋予它实时性。

【问题讨论】:

  • 似乎有点毫无意义,因为 http 是一个无状态的“每次关闭连接”协议,而 ftp 有点要求连接保持打开状态。您可以在 PHP 中执行此操作,但您必须在服务器上保持连接打开并以某种方式将它们与用户相关联,或者每次从客户端发出新请求时登录 ftp 服务器 + 重新创建 cd 命令。跨度>

标签: php javascript ajax ftp


【解决方案1】:

您所描述的主要是前端工程问题。

通常在基于浏览器的 UI 中,这种“实时”情况是通过使用 JS 以定时间隔对服务器进行的 ajax 调用来模拟的。您可以设置端点,将您的“答案”表示返回给 ping,并使用相关信息更新您的前端显示。这绕过了 HTTP 协议的无状态特性。

我建议以这种“ping”方式进行的任何调用也更新它们的间隔,以防它们没有收到新数据。当几个连续的响应显示没有新信息时,减少检查频率会更有效。每次没有新内容要报告时,您可以增加间隔。

当需要真正的“实时”时,还有更高级的实现,您可以在谷歌上搜索“HTTP Push”以获取有关如何在发送新数据之前挂起 HTTP 响应的更多信息。但是,我认为在您的情况下不需要任何特别的东西。

【讨论】:

  • 我还想根据我自己的经验补充一点,如果网站的流量非常大,那么 Sico 至少应该尝试使用 socket.IO 或类似的服务。在亲自从间隔更新切换到 socket.IO 数据之后,我永远不会回去,甚至不会推荐替代方式。我也可以说,在一段时间(几个小时)内执行这种间隔方法,网站的响应速度肯定会降低,服务器也会变得更加紧张。 (根据我的个人经验)
  • @DylanCross Props for SocketIO... 只是偏离了原始帖子的基调,我觉得他是在进行概念验证。我也绝对不喜欢挂那种长电话。我们在我开发的一个应用程序中遇到了类似的情况,最终转移到了一个在 python 中使用 Twisted 实现的消息队列。根据我的经验,这类项目在扩大规模时,通常会让某人从 PHP “毕业”以获得更好的网络接口。
【解决方案2】:

要模拟实时更新,您可以编写一个简单的 javascript 代码,以按时间间隔检查服务器上的更改。就像 Ping 一样,只要有新的东西存在就返回。 如果服务器返回 true,则可以获取所有消息。

越来越多的其他方法是 websockets。 http://socket.io/ 是一个有用的例子。它基于node.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多