情况:用户通过 AJAX 上传了许多照片,然后继续与网站交互,同时 PHP 脚本继续在后台运行并根据上传的照片生成各种缩略图。
站点配置:
- jQuery AJAX (v1.9.1)
- PHP 5.4.7,FastCGI 模式
- IIS 7.5,带有 gzip
我之前提到并尝试实施的帖子(但无济于事):
- 使用 PHP 提前关闭连接
- PHP:输出完成后继续
- 发送 AJAX 结果但在 PHP 中继续处理
- 尽早关闭连接
- 使用 IIS 禁用单个 php 文件的 Gzip 压缩
- http://www.php.net/manual/en/features.connection-handling.php#71172
根据之前的帖子,我已经尝试了大量的脚本选项,但是似乎没有一个告诉 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.
}
});
响应标头似乎还可以...
问题:如何让 AJAX 允许用户在从 PHP 脚本中间收到代码后继续,而 PHP 脚本继续生成缩略图?