AJAX:检测连接关闭,PHP继续
情况:用户通过AJAX上传大量照片,然后继续与网站交互,同时PHP脚本继续在后台运行,并根据上传的照片生成各种缩略图 站点配置:AJAX:检测连接关闭,PHP继续,php,jquery,iis-7.5,Php,Jquery,Iis 7.5,情况:用户通过AJAX上传大量照片,然后继续与网站交互,同时PHP脚本继续在后台运行,并根据上传的照片生成各种缩略图 站点配置: jqueryajax(v1.9.1) PHP5.4.7,FastCGI模式 IIS 7.5,带有gzip 我之前提到并尝试实施的帖子(但无效): 基于之前的文章,我尝试了大量的脚本选项,但是似乎没有人告诉AJAX脚本让用户继续,而PHP继续处理 PHP代码示例: <?php // Save images to db, etc //
<?php
// Save images to db, etc
// Now tell AJAX to let the user continue, before generating thumbnails
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off'); // turn IIS gzip for this file
}
ob_end_clean();
header("Connection: close");
header("Content-Encoding: none"); //ensures gzip is not sent through
ob_start();
echo '123'; // 3 digit number will be sent back to AJAX
$size = ob_get_length(); // should mean Content-Length = 3
header("Content-Length: $size");
ob_end_flush();
flush();
ob_end_clean();
// Generate thumbnails, etc
?>
响应标题似乎没问题
问题:如何让AJAX允许用户在收到PHP脚本中间的代码后继续,同时PHP脚本继续生成缩略图?如果运行请求,它将始终等待PHP脚本完成执行,否则将出现超时。因此,您不能中途停止AJAX,而让PHP继续运行。如果要上载文件,然后创建缩略图,但有上载文件的信息,请分两步执行:
多亏了这一点,拇指也可以在以后第一次被请求时渲染(即使没有ajax)。如果您不想请求和等待拇指,请在服务器上使用cron作业,这将为等待图像创建缩略图。您已经告诉我们当前的情况,但没有告诉我们您的问题是什么。您可以将其存储在数据库中,并创建一个cronjob,在无需用户交互的情况下生成缩略图。@captainPayalysis我的编辑是否有助于阐明我的问题,或者我应该提供更多信息吗?谢谢@gnysek提供您的想法。然而,基于前面提到的SO问题,我认为这种类型的PHP/AJAX交互是可能的。甚至像这样的博客文章似乎也表明这是可能的:
$.ajax({
type: 'POST',
url: ajax_url,
data: { foo: bar },
beforeSend:function(){
//
},
success:function(data){
alert(data); // Only seems to be firing once the thumbnails have been generated.
}
});