【问题标题】:How to maintain a persistent http connection in php?如何在php中保持持久的http连接?
【发布时间】:2011-04-28 13:47:40
【问题描述】:

我有一个小的网络界面,它可以在服务器上上传文件,然后将该文件转储到 oracle db 中。但是其中大约有 700 万条记录,并且 Web 服务器在读取和转储该文件时会超时。 有人可以告诉我如何保持该会话处于活动状态,以便在上传、读取和转储数据库中的数据时不会超时?

伙计们,我说的是用户上传文件并将其转储到数据库中所花费的时间......现在 700 万条记录非常庞大,Web 服务器肯定会超时。 ...如果 oracle 也超时,那么该怎么办.....我知道它令人困惑,但我不想让用户知道他的文件没有转储到 db...异步机制不是在这种情况下的选项...我目前正在使用 apache

到目前为止,它是一个简单的脚本,很少有 html 对象和 php。我必须在 php 中实现... =)

期待您的宝贵回复。 谢谢

【问题讨论】:

  • 显然 75% 对您之前问题的回答没有那么有价值。
  • 您能否添加更多详细信息,尤其是关于您希望“持久”连接的位置?在您的脚本和 oracle 之间还是在客户端和您的脚本之间?另外,当您说有超时(在什么时间之后)时,找到一种方法来增加超时边界而不是使用持久连接(这可能不是您当时正在寻找的)不是更可行
  • 超时可能是服务器问题,记住http是无状态协议
  • 伙计们的问题已修改...请看看它是否有帮助..

标签: php http file-upload timeout webserver


【解决方案1】:

要保持脚本运行,请将此代码放在 php 文件的开头。我认为这仅在您直接调用文件时才有效。我的意思是,如果包含 php 文件,我不相信它会起作用。

set_time_limit(0);
header('Connection: close');
ignore_user_abort();

从这里: http://php.oregonstate.edu/manual/en/features.connection-handling.php

希望这会有所帮助, 伊斯梅尔。

【讨论】:

    【解决方案2】:

    没有“持久的http连接”这样的东西

    我怎样才能让会话保持活跃

    HTTP 是无状态的,因此会话管理不是由协议实现的 - 也与您描述的问题无关。

    和网络服务器超时

    也许如果您告诉我们它是什么网络服务器,那么我们可能能够建议处理超时的方法。

    另外,您没有说明为什么您认为这是超时问题而不是其他问题(例如文件大小限制),并且您没有将上传和后续数据加载作为脚本失败的点进行区分.

    ....但是解决问题的正确方法是在文件上传后启动一个单独的、独立的进程来执行数据加载。有一个谷歌“长期运行的 php 进程 setid”

    【讨论】:

      猜你喜欢
      • 2017-05-28
      • 1970-01-01
      • 2014-01-04
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      相关资源
      最近更新 更多