繁体   English   中英

在脚本运行之前终止与浏览器的连接

[英]Kill connection with browser before script is through running

我有一个脚本,该脚本接收上载的文本文件,对其进行解析,然后将相当多的行插入数据库中。 此过程大约需要一分钟。

即使我使用的是AJAX,我也不希望用户在填充数据库的过程中花一分钟以上的时间看到“正在加载...”。 实际上,一旦解析成功完成,数据库INSERTS将始终有效,因为在解析过程中所有内容均已验证。

因此,我需要做的就是在解析成功后立即返回一个JSON字符串{success:true,data:{cartons: 1000, batchname:"Batch1"}} 我是这样做的,但是浏览器直到连接关闭(脚本正在运行)才解析响应(是否正在通过脚本运行),是否仍然可以让浏览器接受响应(当它进入时),或者让我关闭与浏览器的连接我的PHP脚本继续运行?

我将ExtJS用作处理AJAX的Javascript框架。 有任何想法吗? 这已经让我绞尽脑汁了大约一个星期。

只需指定响应内容的长度即可:

  $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', '');

您也可以在后台从命令行运行其他脚本(无需等待它们的完成),或者对其中带有ignore_user_abort函数的脚本执行http请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM