Ho notato che l'apertura di un file con gzopen e scegliendo la modalità append ("a" oppure "ab") non funziona!
ovvero sembra creare il file ma il risultato è completamente diverso da quello dell'apertura con w!!!
(le dimensioni di quello compresso risultano superiori a quello non compresso!!!)
sul manuale dicono che supporta gli stessi mode di fopen()... ma ciò non è vero
anche con questo scriptino si può vedere che l'append non funziona!!
Codice PHP:
$filename = 'test.gz';
echo "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";
// open file for writing with maximum compression
$zp = gzopen($filename, "w9");
// write string to file
gzwrite($zp, $s);
// close file
gzclose($zp);
// open file for reading
$zp = gzopen($filename, "r");
// read 3 char
echo gzread($zp, 3);
// output until end of the file and close it.
gzpassthru($zp);
gzclose($zp);
echo "\n";
echo "</pre>\n</body>\n</html>\n";
?>
se cambiate "w9" con "a9"
il risultato sarà completamente diverso...
ora il mio problema è che con gzopen() devo farci un logger... che ogni volta scriva partendo dalla fine del file... come posso fare?
nemmeno gzseek supporta il seeking in rifermento alla fine del file... ma supporta il seeking solo in maniera assoluta!!! :master:
come posso fare per arrivare in fretta (e senza sovraccaricare il server) alla fine del file?
(caricare il file in una stringa e aggiungerci la nuova riga alla fine quindi ricomprimerlo è una soluzione che ho già scartato in quanto il logger può diventare anche di 8/10mb... un valore che supera di certo il memory limit...)
ho pensato ad un gzseek che aumenta il valore del file di 1 ogni volta dentro ad un while tipo così:
Codice PHP:
$ipblocker_config['fp_seeker'] = 0;
while(!gzeof($ipblocker_config['fp'])){
$ipblocker_config['fp_seeker']++;
gzseek($ipblocker_config['fp'], $ipblocker_config['fp_seeker']);
}
ma mi va in loop
help please