情境:用户通过AJAX上传大量照片,然后继续与网站互动,同时PHP脚本继续在后台运行,并根据上传的照片生成各种缩略图。
网站配置:
我之前提到并试图实施的帖子(但无济于事):
我已经根据以前的帖子尝试了大量的脚本选项,但似乎没有人告诉AJAX脚本让用户继续,而PHP继续处理......
示例PHP代码:
<?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
?>
jQuery 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.
}
});
响应标题似乎没问题......
问题:当PHP脚本继续生成缩略图时,如何让AJAX允许用户继续从PHP脚本中间接收代码?
答案 0 :(得分:1)
如果您运行请求,它将一直等到PHP脚本完成执行,否则将会超时。所以你不能在中间停止AJAX,并保持PHP运行。如果您想上传文件,然后创建缩略图,但有上传文件的信息,请分两步完成:
由于这一点,拇指也可以在以后第一次请求时呈现(即使没有ajax)。如果您不想请求并等待拇指,请在服务器上使用cron job,这将创建等待图像的拇指。