<?php
// ------------------------------------------------------------------------- //
// Une classe pour "dumper" une partie de vos scripts //
// ------------------------------------------------------------------------- //
// Auteur: Ben //
// Email: mrben@disco2k.net //
// Web: http://www.disco2k.net //
// ------------------------------------------------------------------------- //
// Supposons que votre script initial soit de cette forme :
header();
gros_job_sql();
footer();
?>
<?php
// Pour dumper (cacher, enregistrer dans un fichier) le "gros_job_qsl", écrivez :
header();
require 'exodumpinline.php';
$exodp = new exoDumpInline();
if($exodp->start()) {
gros_job_sql();
$exodp->end();
}
footer();
// Et tout ce qui devrait être affiché par le gros_job_sql sera redirigé dans
// un fichier qui se mettra à jour tous les "lifeTime" secondes.
?>
<?php
// ------------------------------------------------------
// Et en remplacant la déclaration de la classe par :
// $exodp = new exoDumpInline('job_sql_'.$ID_Membre);
// vous aurez un dump par membre (ou ce que vous voulez).
// ------------------------------------------------------
class exoDumpInline {
// chemin vers le répertoire des dumps
var $dirDump = './';
// extension des dumps
var $extDump = '.exodump';
// temps de vie des dumps en secondes
var $lifeTime = 600;
// chemin vers phpself (ne pas toucher)
var $pathDumped;
// pointeur
var $fpTo = 0;
// constructeur
function exoDumpInline($newPath = '', $newLTime = 0) {
// mise à jour des paramètres
if ($newPath)
$this->pathDumped = $this->dirDump . $newPath .$this->extDump;
else
$this->pathDumped = $this->dirDump.basename(getenv('PATH_INFO')).$this->extDump;
if ($newLTime)
$this->lifeTime = $newLTime;
}
// test & début du stream
function start() {
if (filemtime($this->pathDumped) > time() - $this->lifeTime) {
readfile($this->pathDumped);
return 0;
}
ob_start();
ob_implicit_flush(0);
return 1;
}
// fin du stream et sauvegarde
function end() {
$this->fpto = @fopen($this->pathDumped, 'w');
$contents = str_replace(' ', ' ', ob_get_contents());
$contents = str_replace("\t", '', $contents);
$contents = str_replace("\n", '', $contents);
$contents = str_replace("\r", '', $contents);
fwrite($this->fpto, $contents);
fclose($this->fpto);
ob_end_flush();
}
}
// Exemple
//
// $exodp = new exoDumpInline();
//
// if($exodp->start()) {
// ?>
// <p>Voilà du contenu sauvé dans <?= $exodp->pathDumped ?>
// pour <? echo floor($exodp->lifeTime / 60) ?> minutes.<br>
// Quelle heure est-il ? <? echo date('H:i') ?></p>
// <?
// $exodp->end();
// }
// ?>
// <p><i>En fait, il est <? echo date('H:i') ?>.</i></p>
// <?
// --------------
//
?>