2012-03-07 135 views
1

我有一个脚本需要上传的文本文件,解析它,然后插入相当多的行到数据库中。这个过程大约需要一分钟。在脚本运行之前终止与浏览器的连接

尽管我使用的是AJAX,但我不希望我的用户在填充数据库时不得不看到正在加载...。实际上,一旦分析成功完成,数据库INSERTS将始终工作,因为在分析过程中所有内容都经过验证。

所以我需要做的是一旦解析成功,就返回一个JSON字符串{success:true,data:{cartons: 1000, batchname:"Batch1"}}。我这样做,但浏览器不解析的响应,直到连接关闭(脚本是通过运行)是否有任何让浏览器接受响应,因为它来或我关闭与浏览器的连接我的PHP脚本继续运行?

我正在使用ExtJS作为处理AJAX的Javascript框架。有任何想法吗?这已经让我的大脑停留了大约一个星期。

+0

请看[这里](http://stackoverflow.com/questions/138374/close-a-connection-early) – Mikhail 2012-03-07 05:58:04

回答

1

只要指定响应的主体内容的长度:

$out = 'Return this'; 
    header("Content-Length: " . strlen($out)); 
    header("Connection: close"); 
    echo $out; 
    flush(); 
    echo 'But do not return this'; 
    // create some file to show that script continues its execution 
    file_put_contents('script.is.running', ''); 

您也可以运行在后台命令行其他脚本(无需等待其完成)或执行HTTP请求到脚本其中有ignore_user_abort功能。

+0

这看起来应该可以工作,我现在就去尝试。 – 2012-03-07 06:00:31

相关问题