gpt4 book ai didi

php - AJAX : Detect connection closed, PHP 继续

转载 作者:搜寻专家 更新时间:2023-10-31 21:37:40 25 4
gpt4 key购买 nike

情况:用户通过 AJAX 上传了一些照片,然后继续与网站交互,同时 PHP 脚本继续在后台运行,并根据上传的照片生成各种缩略图。

站点配置:

  1. jQuery AJAX (v1.9.1)
  2. PHP 5.4.7,FastCGI 模式
  3. IIS 7.5,带 gzip

我引用并尝试实现的以前的帖子(但无济于事):

我已经根据以前的帖子尝试了大量的脚本选项,但是似乎没有一个告诉 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.
}
});

响应 header 看起来没问题...

POST response headers as detected by Firebug

问题:如何让 AJAX 允许用户在从 PHP 脚本中间接收到代码后继续,同时 PHP 脚本继续生成缩略图?

最佳答案

如果你运行request,它会一直等到PHP Script执行完,否则就会超时。所以你不能在中间停止 AJAX,并保持 PHP 运行。如果您想上传文件,然后创建缩略图,但有文件已上传的信息,请分两步完成:

  1. 使用AJAX上传文件->返回成功
  2. 在成功时运行另一个 AJAX 请求以获取上传的图像(或者实际上是拇指)。

多亏了这一点,缩略图也可以在第一次被请求时呈现(即使没有 ajax)。如果您不想请求和等待拇指,请在服务器上使用 cron 作业,这将为等待图像创建拇指。

关于php - AJAX : Detect connection closed, PHP 继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com