2011-11-10 69 views
1

我審查類似的問題,但沒有找到解決我的問題代慢PDF(Yii框架)

環境中使用我們的網絡項目:

  • 列表項
  • Yii框架(Zend引擎V2.3.0)
  • PHP 5.3.8
  • 服務器操作系統Fedora15的
  • 的Java 1.6.0_22
  • 阿帕奇蠟染1.7的java lib中
  • 的libpng 2:1.2

我們的項目產生dynamicaly PDF文檔(使用Zend全文類)。

PDF生成需要AROUT 〜10秒完成約頁,其中包括2 PNG圖像(圖表上SVG格式和java在POST數據發送轉換他(SVG)至PNG圖像;上網絡圖表由高圖js-lib生成,png)。

我們需要加快生成過程。

的我們的代碼某些部分:

public function actionQuery() 
{ 
    ... 
    $xxExporter->generatePdf($request, $someAdditionalData); 
    ... 
    $xxExporter->httpOutputFile(); 
    ... 
    Yii::app()->end(); 
} 

public function generatePdf(CHttpRequest $request, array $someAdditionalData) 
{ 
    initRequest($request, $someAdditionalData); 
    ... 
    ...attachItemToPdf.. 
    ... 
    setMetaData 
    ... 
} 

public function httpOutputFile() 
{ 
    $this->pdf->save($filename); 

    header("Content-Disposition: attachment; filename=\"{$this->filename}.pdf\""); 
    header("Content-type: application/pdf"); 
    header("Content-length: " . filesize($filename)); 

    echo file_get_contents($filename); 
    unlink($filename); 
} 

轉換SVG與Java巴布亞新幾內亞:

$type = "-m {$this->fileType}"; 
$width = !empty($this->fileExportWidth) ? "-w {$this->fileExportWidth}" : ''; 
$outputFile = "-d {$this->fileExportTempName}"; 
$inputFile = $this->fileTempName; 

$errorString = exec("{$this->pathJava} -jar {$this->pathBatik} {$type} {$outputFile} {$indexed} {$width} {$inputFile}", $output, $return_var); 

明天我會嘗試安裝一些JPG-lib添加到服務器,並嘗試更換PNG至JPG在項目中。

如果你需要一些額外的信息 - 讓我知道,我把它給你。

有人可以幫助我嗎?我真的不知道該怎麼做,我嘗試了我所知道的一切。

非常感謝您的任何幫助或建議!

+0

你應該更多地分析它,看看哪些是緩慢的過程,如果圖像轉換或PDF創建;您可能還想使用較少的數據測試兩個進程,以查看問題是否存在。 –

+0

我在導出功能中發現麻煩部分:我有2個圖表,他們生成速度很慢,大約3秒 – itspoma

回答