2010-10-21 69 views
0

我有一个小的web界面,上传一个文件在服务器上,然后转储该文件在oracle数据库。但其中有大约700万条记录,并且Web服务器在读取和转储该文件时会超时。 有人可以告诉我如何保持该会话活着,以便它在上传,读取和转储数据分贝时不会超时?如何在PHP中保持持久的http连接?

伙计们,我说的是当用户上传一个文件时它将被采用的时间,它将被转储到db ....现在7百万条记录是巨大的,Web服务器肯定会超时。 ..如果oracle超时,那么该怎么办.....我知道它的困惑,但我不想让用户知道他的文件不会被转储到db ...异步机制不是一个选项在这种情况下...我现在使用apache

这是一个简单的脚本,目前为止,很少的html对象和php。并且我必须在php中使... =)

预计您的宝贵回应。 感谢

+1

显然,对您之前的问题的回复中有75%没有那么有价值。 – 2010-10-21 11:51:50

+0

请问您可以添加一些更多的细节,特别是关于您想要“持续”连接的位置?你的脚本和oracle之间或客户端和你的脚本之间?另外,当你说有一个超时(在什么时间之后)时,找到一种方法来增加超时边界而不是使用持久连接(这可能不是你正在寻找的那个)是更可行的。 – Gordon 2010-10-21 11:54:08

+0

超时可能是一个服务器的问题,记得HTTP是一个无状态的协议 – Hannes 2010-10-21 11:54:10

回答

-3

有没有这样的事,作为一个“持久的HTTP连接”

我怎样才能保持该会话活着

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

和Web服务器获取超时

也许如果你告诉我们什么web服务器它是那么我们可能已经能够表明操作超时的方式。

此外,你不会说为什么你认为它的超时问题,而不是其他问题(例如文件大小限制),并且你没有区分上载和随后的数据加载作为脚本的点失败。

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

+3

*(nitpick)* http://en.wikipedia.org/wiki/HTTP_persistent_connection – Gordon 2010-10-21 12:22:12

+0

老板请再次检查问题...我现在提到你想要的信息... – awaiskhan200 2010-10-25 07:47:10

1

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

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

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

希望这有助于 伊斯梅尔。