php - 如果我有大量数据,为什么 TCPDF 结果不显示?

标签 php mysql tcpdf

我用 PHP 开发了一个软件,并用 TCPDF 生成报告。它运行良好,但是在MySQL中导入大量数据后,PHP无法在浏览器超时之前生成报告。我尝试过最新的 Firefox 和 Chrome 版本。

这是我的脚本:

     <?php

    require_once('tcpdf/config/lang/eng.php');
    require_once('tcpdf/tcpdf.php');

    // create new PDF documentation
     include "koneksi.php"; //file conection

     $bln=$_POST[BLN];  //for catch month
     $thn=$_POST[THN];  //for catch year
     $exp=$_POST[EXP];  //for catch expedition name


     if(empty($exp))
     {    
       $sql = "SELECT * FROM tb_exp_local where  bulan = '$bln'  AND tahun = '$thn'";
     }
     elseif($exp != "")
     {
       $sql = "SELECT * FROM tb_exp_local where  bulan = '$bln'  AND tahun = '$thn' AND nama_exp = '$exp'";
     }  
       $hasil = mysql_query($sql);


       $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

       // set font
       $pdf->SetFont('times', '', 11);



    // landscape
       $pdf->addPage( 'L', 'LETTER' );

  //this for convert html to pdf with html function    

       $html = '
    <table border="1" cellspacing="3" cellpadding="4">
        <tr><td colspan="9" align="center"><h2>Form Pantauan Expedisi Export</h2></td></tr>
        <tr>
            <th align="center"><b>Tanggal</b></th>
            <th align="center"><b>Nama Expedisi</b></th>
            <th align="center"><b>Nama Distributor</b></th>
            <th align="center"><b>Kota Tujuan</b></th>
            <th align="center"><b>No Faktur</b></th>
            <th align="center"><b>Kondisi Armada Pengiriman</b></th>
            <th align="center"><b>Ketepatan Jumlah</b></th>
            <th align="center"><b>Ketepatan Waktu Kirim</b></th>
            <th align="center"><b>Keterangan</b></th>
        </tr></table>';

       while ($data = mysql_fetch_array($hasil))
       {

         $html .= '<table border="1"><tr><td align="center">'.$data['tgl'].'</td>
                       <td align="center">'.$data['nama_exp'].'</td>
                       <td align="center">'.$data['nama_dist'].'</td>
                       <td align="center">'.$data['kota_tujuan'].'</td>
                       <td align="center">'.$data['faktur'].'</td>
                       <td align="center">'.$data['konarmada'].'</td>
                       <td align="center">'.$data['tepatjml'].'</td>
                       <td align="center">'.$data['tepatwaktu'].'</td> 
                       <td align="center">'.$data['ket'].'</td>  
                       </tr></table> ';

       }

       $pdf->writeHTML($html, true, false, true, false, ''); //for generate




       $pdf->Output('FormPantauExpLocalAll', 'I'); // for generate pdf file

    ?>

最佳答案

服务器超时不依赖于浏览器。尝试使用set_time_limit(60)在你的循环中:

   while ($data = mysql_fetch_array($hasil))
   {
       set_time_limit(60);
       $html .= '(...)';
   }

此外,尝试将 INDEX 添加到数据库的(bulan、tahun、nama_exp)列上,它应该会加快检索过程。另外,请注意,在此过程中您可能会耗尽内存(检查服务器上的 PHP 日志)

关于php - 如果我有大量数据,为什么 TCPDF 结果不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11859702/

相关文章:

mysql组合唯一键

php - 如何将相同类型的查询与不同的变量结合起来

javascript - 在 PHP 中将 HTML 页面保存为 PDF

php - 在 Codeigniter 中创建跟踪表。使用 Foreach 插入数据

php - 在 TCPDF 中,如何将当前页码获取为整数?

php - 使用 tcpdf 创建 PDF 在 iphone 上显示空白

php - 使用php函数对数字索引数组的元素进行分级

php - 根据另一个表的列值从一个表中选择一条记录

php - PHP中静态类的不同实例

php - $.ajax 从 PHP 文件获取返回值