par
Invité » 24 nov. 2006, 23:07
Au lieu de générer à la volée à chaque demande le PDF, pourquoi ne pas mettre un cache qui permettrait de générer le PDF qu'à la 1ère demande et ensuite uniquement renvoyer vers le PDF.
Impossible, j'y ai bien sûr pensé mais l'espace disque me manque
Sinon voici le code de la page qui génére le fichier :
<?php
if (isset ($_GET['id'])) {
header('Content-type: application/pdf');
require('download/fpdf/fpdf.php');
include('includes/config.php');
$id = $_GET['id'];
mysql_connect($dbhost, $dbuser, $dbpasswd) or die('Erreur de connexion');
mysql_select_db($dbname) or die('Base inexistante');
$sql = 'SELECT * FROM `site_v5_fichiers` WHERE `id` = '.$id;
$query = mysql_query($sql) or die('Erreur1');
$file = mysql_fetch_array($query);
$pdf=new FPDF('P','mm','A4');
$pdf->Open();
$pdf->SetAuthor('ILove5A.be');
$pdf->SetCreator('© ILove5A.be');
$pdf->SetTitle($file['titre'].' - '.$file['soustitre']);
$sql = 'SELECT * FROM `site_v5_cours` WHERE `id` = '.$file['cours'];
$query = mysql_query($sql) or die('Erreur2');
$cours = mysql_fetch_array($query);
$pdf->SetSubject('Cours de '.$cours['nomannee']);
$pdf->SetFont('Arial','',8);
$pdf->SetTextColor(0,0,0);
$sql = 'SELECT * FROM `site_v5_feuilles` WHERE `fichier` = '.$id.' ORDER BY `id` ASC';
$query = mysql_query($sql) or die('Erreur3');
$count = 1;
while ($list = mysql_fetch_array($query)) {
if ($list['flip'] == 'P') { $pdf->SetMargins(5,5); }
else { $pdf->SetMargins(7,4); }
$pdf->AddPage($list['flip']);
$chemin = 'feuilles/'.$list['id'].'.jpg';
if ($list['flip'] == 'P') { $pdf->Image($chemin,5,15,200,282); }
else { $pdf->Image($chemin,7.5,10,282,200); }
if ($list['flip'] == 'P') {
$pdf->Write(6,'© ILove5A.be - '.$cours['cours'].' > '.$file['titre'].' - '.$file['soustitre'].'','http://www.ilove5a.be/');
} else {
$pdf->Write(4,'© ILove5A.be - '.$cours['cours'].' > '.$file['titre'].' - '.$file['soustitre'].'','http://www.ilove5a.be/');
}
$pdf->Cell(0,4,'Page '.$count.' de '.$file['pages'].'',0,0,'R');
$count++;
}
mysql_close();
$pdf->Output();
} else { header("Location: index.php"); exit(); }
?>
[quote="@rthur"]Au lieu de générer à la volée à chaque demande le PDF, pourquoi ne pas mettre un cache qui permettrait de générer le PDF qu'à la 1ère demande et ensuite uniquement renvoyer vers le PDF.[/quote]
Impossible, j'y ai bien sûr pensé mais l'espace disque me manque :lol:
Sinon voici le code de la page qui génére le fichier :
[php]<?php
if (isset ($_GET['id'])) {
header('Content-type: application/pdf');
require('download/fpdf/fpdf.php');
include('includes/config.php');
$id = $_GET['id'];
mysql_connect($dbhost, $dbuser, $dbpasswd) or die('Erreur de connexion');
mysql_select_db($dbname) or die('Base inexistante');
$sql = 'SELECT * FROM `site_v5_fichiers` WHERE `id` = '.$id;
$query = mysql_query($sql) or die('Erreur1');
$file = mysql_fetch_array($query);
$pdf=new FPDF('P','mm','A4');
$pdf->Open();
$pdf->SetAuthor('ILove5A.be');
$pdf->SetCreator('© ILove5A.be');
$pdf->SetTitle($file['titre'].' - '.$file['soustitre']);
$sql = 'SELECT * FROM `site_v5_cours` WHERE `id` = '.$file['cours'];
$query = mysql_query($sql) or die('Erreur2');
$cours = mysql_fetch_array($query);
$pdf->SetSubject('Cours de '.$cours['nomannee']);
$pdf->SetFont('Arial','',8);
$pdf->SetTextColor(0,0,0);
$sql = 'SELECT * FROM `site_v5_feuilles` WHERE `fichier` = '.$id.' ORDER BY `id` ASC';
$query = mysql_query($sql) or die('Erreur3');
$count = 1;
while ($list = mysql_fetch_array($query)) {
if ($list['flip'] == 'P') { $pdf->SetMargins(5,5); }
else { $pdf->SetMargins(7,4); }
$pdf->AddPage($list['flip']);
$chemin = 'feuilles/'.$list['id'].'.jpg';
if ($list['flip'] == 'P') { $pdf->Image($chemin,5,15,200,282); }
else { $pdf->Image($chemin,7.5,10,282,200); }
if ($list['flip'] == 'P') {
$pdf->Write(6,'© ILove5A.be - '.$cours['cours'].' > '.$file['titre'].' - '.$file['soustitre'].'','http://www.ilove5a.be/');
} else {
$pdf->Write(4,'© ILove5A.be - '.$cours['cours'].' > '.$file['titre'].' - '.$file['soustitre'].'','http://www.ilove5a.be/');
}
$pdf->Cell(0,4,'Page '.$count.' de '.$file['pages'].'',0,0,'R');
$count++;
}
mysql_close();
$pdf->Output();
} else { header("Location: index.php"); exit(); }
?>[/php]