Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX:检测连接关闭,PHP继续_Php_Jquery_Iis 7.5 - Fatal编程技术网

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 //

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

站点配置:

  • jqueryajax(v1.9.1)
  • PHP5.4.7,FastCGI模式
  • 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
    ?>
    
    响应标题似乎没问题


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

    如果运行请求,它将始终等待PHP脚本完成执行,否则将出现超时。因此,您不能中途停止AJAX,而让PHP继续运行。如果要上载文件,然后创建缩略图,但有上载文件的信息,请分两步执行:

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

  • 多亏了这一点,拇指也可以在以后第一次被请求时渲染(即使没有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.
            }
        });