如何在php中维护持久的http连接?

时间:2010-10-21 11:48:20

标签: php http file-upload timeout webserver

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

伙计们,我说的是当用户上传文件并将其转储到数据库时将采取的时间....现在有7百万条记录是巨大的,网络服务器肯定会超时。 ...如果oracle超时,那么该做什么.....我知道它令人困惑但我不想让用户知道他的文件没有被转储到db ...异步机制不是在这种情况下的选项......我现在正在使用apache

到目前为止,这是一个简单的脚本,很少有html对象和php。我要在php中创建它... =)

期待您的宝贵回应。 谢谢

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:-3)

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

  

如何让这个会话保持活力

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

  

和网络服务器有时间

也许如果你告诉我们它是什么网络服务器那么我们可能会建议操纵超时的方法。

此外,您没有说出为什么您认为它是超时问题而不是其他错误(例如文件大小限制)并且您没有区分上传和后续dataload作为脚本失败的点

....但解决问题的正确方法是在文件上传后启动一个独立的独立进程来执行dataload。有一个谷歌'长期运行PHP进程setsid'