2012-04-09 51 views
1

我試圖打印一系列的時間卡(最多150)到PDF。它工作正常,一個紀錄,但未能超過20無法使用mPDF打印超過20條記錄(超時/內存問題?)

下面是一個樣本記錄

<div class='container'><h3>Timecard</h3><table style='table-layout: fixed;width:100%;text-align:left;'><tr><td class='infoItem' width='265px'><span class='fieldID'>Employee Name:</span> Gomez Addams</td><td class='infoItem'><span class='fieldID'>EE#:</span> 9502</td></tr><tr><td class='infoItem'><span class='fieldID'>Dept:</span> County Board</td><td colspan=2 align='left' class='infoItem'><h4><span class='fieldID'>JobID:</span> 13 <em class='fieldID grey'>(full-time non-exempt Sheriff Union contract with holiday)</em></h4></td></tr><tr><td class='infoItem'><span class='fieldID'>Payperiod:</span> 100 <em class='fieldID grey'>(Mar 10 to Mar 23 2012)</em></td><td class='infoItem'><span class='fieldID'>Pay Date:</span> Mar 30 2012</td></tr></table><hr /> 
<table class='timecard' width='658px'><tr><th class='timeHdr'>day</th><th class='timeHdr'>date</th><th class='timeHdr'>1000<br/>reg<br/>hrs</th><th class='timeHdr'>1004<br/>OT<br/>1x</th><th class='timeHdr'>1005<br/>OT<br/>1.5x</th><th class='timeHdr'>1035<br/>PTO<br/>used</th><th class='timeHdr'>1045<br/>comp<br/>used</th><th class='timeHdr'>1066<br/>comp<br/>1x</th><th class='timeHdr'>1067<br/>comp<br/>1.5x</th><th class='timeHdr'>other<br/>hrs</th><th class='timeHdr'>total<br/>hrs</th><th class='timeHdr'>1003<br/>hol<br/>prem</th><th class='timeHdr'>1007<br/>shift<br/>diff</th><th class='timeHdr'>1010<br/>out of<br/>class</th></tr> 
<tr class='even'><td class='timeHdr'>sat</td><td align='center' class='timeHdr'>3/10</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row0'></div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>sun</td><td align='center' class='timeHdr'>3/11</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row1'></div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='even'><td class='timeHdr'>mon</td><td align='center' class='timeHdr'>3/12</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row2'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>tue</td><td align='center' class='timeHdr'>3/13</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row3'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='even'><td class='timeHdr'>wed</td><td align='center' class='timeHdr'>3/14</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row4'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>thu</td><td align='center' class='timeHdr'>3/15</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row5'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='even'><td class='timeHdr'>fri</td><td align='center' class='timeHdr'>3/16</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row6'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>sat</td><td align='center' class='timeHdr'>3/17</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row7'></div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='even'><td class='timeHdr'>sun</td><td align='center' class='timeHdr'>3/18</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row8'></div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>mon</td><td align='center' class='timeHdr'>3/19</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row9'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='even'><td class='timeHdr'>tue</td><td align='center' class='timeHdr'>3/20</td><td class='timeView'>4</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'>4</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row10'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>wed</td><td align='center' class='timeHdr'>3/21</td><td class='timeView'>3.5</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'>4.5</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row11'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='even'><td class='timeHdr'>thu</td><td align='center' class='timeHdr'>3/22</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row12'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr class='odd'><td class='timeHdr'>fri</td><td align='center' class='timeHdr'>3/23</td><td class='timeView'>8</td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td><td class='rowTot'><div id='row13'>8</div></td><td class='timeView'></td><td class='timeView'></td><td class='timeView'></td></tr> 
<tr><td colspan=2 style='background: #e6f4ff;' class='timeHdr'>totals</td><td align='center' class='colTot'><div id='col0'>71.5</div></td><td align='center' class='colTot'><div id='col1'></div></td><td align='center' class='colTot'><div id='col2'></div></td><td align='center' class='colTot'><div id='col3'>8.5</div></td><td align='center' class='colTot'><div id='col4'></div></td><td align='center' class='colTot'><div id='col5'></div></td><td align='center' class='colTot'><div id='col6'></div></td><td align='center' class='colTot'><div id='col7'></div></td><td align='center' class='totTot'>80</td><td align='center' class='colTot'><div id='col9'></div></td><td align='center' class='colTot'><div id='col10'></div></td><td align='center' class='colTot'><div id='col11'></div></td></tr> 
<tr><td colspan=2 class='timeHdr' style='vertical-align: top;'>comments</td><td colspan=14 class='comment'> </td></tr> 
</table><hr /><table style='table-layout: fixed;width:100%;text-align:left;'><td colspan=2 ><em class='grey'>This form is due in the Auditor/Treasurer's Office by 9:00am on Monday after the end of the pay period. No overtime without authorization is allowed.&nbsp; I affirm that the information contained herein is true and correct to the best of my knowledge.</em></td></tr><tr><td colspan=2>&nbsp;</td></tr><tr><td class='infoItem' valign='top'><span class='fieldID'>Employee:</span> Gomez Addams</td><td class='infoItem'><span class='fieldID'>Supervisor:</span> </td></tr><tr><td class='infoItem'><span class='fieldID'>Employee Approved:</span> </td><td class='infoItem'><span class='fieldID'>Supervisor Approved:</span> </td></tr></table><br /></table> 

<h4>Payroll Notes:</h4><p>note 4</p></div> 

代碼中的換行符是一樣正在打印什麼是我收集的事項...

因此基於這一點,我再有這樣的:

ini_set("memory_limit", "256M"); 
$stylesheet = file_get_contents('../css/timecardPDF.css'); 
$mpdf=new mPDF(); 
$mpdf->WriteHTML($stylesheet,1); 
<loop>$html=above code;$mpdf->WriteHTML($html,2);</end loop> 
$mpdf->Output('../timecards/file.pdf','F'); 
exit; 

所以一切是完全理所應當的,直到我嘗試循環的20倍以上。我能做些什麼來獲得套件和kaboodle(150條記錄)以打印到pdf文檔?

謝謝您的好意!

+0

的人誰發生在類似的問題:原來它只是超時延長了PHP超時(set_time_limit(#ms)),它的工作原理(只需要一個looong時間!) – jlisham 2012-04-11 21:33:03

回答

-1

的人誰在一個類似的問題發生了:原來它只是超時,從而延長了PHP超時(參數或者set_time_limit(#ms))和它的作品(只是需要時間looong!)

+0

這不是一個解決方案,只是非常糟糕的做法。根據您的服務器環境,這可能會導致您的apache2進程最大化其內存,並導致所有其他頁面請求非常緩慢,直到您的腳本完成。 – Janpan 2016-03-31 08:50:47

+0

可能稱之爲解決方案而不是解決方案。 – jlisham 2016-03-31 16:03:30

+0

夠公平的。但說實話,我認爲Mpdfs Output方法有一些不好的代碼,導致它很慢。它實際上呈指數級變慢。我們正在考慮使用不同的庫。 – Janpan 2016-04-01 00:10:17