【问题标题】:persistent php connection?持久的php连接?
【发布时间】:2011-01-13 23:20:11
【问题描述】:

是否可以让 php 脚本在某个点暂停等待 ajax 响应,然后继续执行?

如果不是,那么存储脚本的当前状态(所有定义的变量等)直到再次调用它的最合适的方法是什么?

【问题讨论】:

  • 一个等待 Ajax 响应的 PHP 脚本?我不明白。
  • 我认为他的意思是,在打印出他的页面时,他希望页面进行 ajax 调用,但在收到响应之前不要继续打印……无论如何。
  • @haliwood 您需要研究 HTTP 请求的工作原理,并清楚地了解客户端上发生了什么以及服务器上发生了什么。之后你会过得更轻松。

标签: php persistent-connection


【解决方案1】:

让它等待一个永远不会出现的 ajax 响应听起来像是一个非常糟糕的计划(除了由于 http 作为无状态协议的性质而不可能)。

使用session 持久化用户数据有什么问题(可以在会话中存储对象)?但它不会自动序列化 整个 状态。

【讨论】:

  • 没有办法让它等待。一旦将其发送到客户端(发生“ajax”),php 就完成了处理(不包括缓冲),并且无法获得新的输入。
  • 要明确一点:有一个 hack 可以让你这样做(使用 fork),所以这是可能的。这是非常非常非常糟糕、丑陋、低效和不安全的黑客攻击——但并非不可能。 :)
【解决方案2】:

不是 php 是如何工作的,也不是 ajax。每个请求都是独立的。您可以使用会话。

【讨论】:

    【解决方案3】:

    我认为您正在寻找 Cometlink text - 这是一种反向 Ajax 形式,可以无限期地保持连接打开 - 尽管我认为您不会有 PHP 脚本,只是等待它......

    【讨论】:

    • 再一次,当 PHP 运行时不会发生这种情况,comet 来自 javascript 的 httpxmlrequest 永远不会关闭连接,而不是不断刷新它,这在浏览器设置、代理等不喜欢的情况下是不确定的永远不会关闭的连接。无论如何,comet 不是 php 在完成输出后可以等待客户端发生某些事情的任何东西。
    • true - 但问题是脚本是否“需要”在中间等待,或者服务器是否可以以响应彗星请求的方式编写 - 因为没有办法做OP的要求,我只是建议一种接近它的方法。
    【解决方案4】:

    如果您想获得通常通过 ajax 访问的 php 脚本响应,那么只需使用 curl 函数。 Curl 将等待响应到达。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2012-07-30
      • 1970-01-01
      • 2014-04-28
      • 2011-04-21
      • 1970-01-01
      相关资源
      最近更新 更多