【问题标题】:php script from Ajax stops loading after browser is closed关闭浏览器后,来自 Ajax 的 php 脚本停止加载
【发布时间】:2014-10-29 04:29:13
【问题描述】:

我正在开发的网站根据客户的输入构建 pdf,我决定一旦购买完成,即开始生成 pdf。原因是 pdf 可能达到 tp 50/60MB,我不希望客户端必须等待它完成。

我正在使用 Opencart,在结帐成功页面上,我有一个 Ajax 命令加载 PHP 脚本。

我的印象是用户可以在脚本启动后关闭页面,但由于某种原因,我发现如果我希望文件出现在我的服务器上,我必须等待 5/10 秒才能关闭。

作为测试的一部分,调试有点困难,需要立即关闭浏览器。

这是我的 Ajax...

$(document).ready(function() {  

    $.ajax({
        url: 'index.php?route=pdfengine/pdfengine/generate_final_pdf',
        type: 'post',
        dataType: 'json',
        data: {     
        },
        beforeSend: function() {},
        complete: function() {},
        success: function(json) {}
        });
    });

和我的 php(目前我在上面加载巨大的图像以表示加载时间)

 public function generate_final_pdf() {

    include('convert-to-pdf/mpdf.php');

    $mpdf=new mPDF();


    $stylesheet = file_get_contents(DIR_APPLICATION.'view/theme/rascal/stylesheet/stylesheet.css');
    $mpdf->WriteHTML($stylesheet,1);
    $mpdf->WriteHTML('<html><body><div class="pdf-test-style"><img src="http://example.com/top_quality_image.jpg" />test</div><pagebreak><img src="http://example.com/top_quality_image2.jpg" />test<pagebreak><img src="http://example.com/top_quality_image3.jpg" />test</body></html>',2);           

    $mpdf->Output(DIR_FINAL_PDFS.'order_idpdfid-'.$this->session->data['pdf_id'].'.pdf','F');


 }

编辑:

只是添加更多我在阅读这些文章并查看回复后尝试过的信息,

所以在我设置了 ajax 的文件上..

ini_set('ignore_user_abort',true);

在我设置的 ajax 调用的函数中...

ini_set('ignore_user_abort',true);   
set_time_limit(0);

对于第一个,我运行了 phpinfo(),它确实向我确认了 ignore_user_abort 已打开,这显然意味着该部分不是问题。

【问题讨论】:

标签: php jquery ajax


【解决方案1】:

使用ignore_user_abort(true) 保持脚本运行,即使用户关闭页面。

【讨论】:

  • 谢谢,不幸的是它不起作用,但我认为这是一个托管问题,当我运行phpinfo() 时,它说ignore_user_abort Off
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2013-04-30
  • 2014-10-30
  • 2021-03-20
  • 1970-01-01
相关资源
最近更新 更多