Newsgroup: it.comp.www.php
Titolo: strano... strano problema con \n

Ciao a tutti, sto creando un file di log e fino ad ora il codice è questo:
$ip=getenv('REMOTE_ADDR');
$data=date ("d-m-Y H:i:s");
$nof = "file.txt";
$fop = fopen($nof, "a");
fputs($fop, $ip.$data."\n");
fclose($fop);
print 'Scrittura sul file avvenuta correttamente';
purtroppo ho notato che il "\n" mi viene ignorato totalmente nel file di 
destinazione e tutti i risultati continuano a uscire su un'unica linea!
Ho provato anche mettendo gli apici '' al posto delle virgolette o 
inglobando $ip.$data."\n" in un unico "$ip.$data.\n"
ma niente!
Il tutto lo sto provando in locale con EasyPHP.. che puo' essere??
Qualche impostazione dell'emulatore?? Se si dove devo metter mani perchè
il '\n' venga visto??
Sapete in alternativa qualche espediente per bypassare questo strano 
problema?
Help please...
Grazie mille.

 destinazione e tutti i risultati continuano a uscire su un'unica linea!
Lo guardi con windows e probabilmente con un editor scrauso (blocco note  
?).
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

 destinazione e tutti i risultati continuano a uscire su un'unica linea!
Probabilmente lo stai guardando su win e con un editor scrauso (blocco  
note).
Fai il download di un editor decente e vedrai che si visualizza  
correttamente.
In alternativa aggiungi al php queste linee:
$txt = file( $nof );
echo ( nl2br( $txt ));
Se si vede su piu' linee hai la sicurezza che tutto si vede correttamente.
Se ti serve visualizzare il file correttamente col notepad di windows  
sostituiscisci /n con /r/n.
Tac


Grazie per avermi risposto, ho fatto con \r\n e infatti ora funge per bene.
Un'ultima domanda, il file di log cosi' mi esce con la data in ordine 
crescente. Questo perchè ovviamente con \r\n il puntatore mi va a capo 
automaticamente e aggiunge una nuova linea.
Esiste la possibilità di creare l'ordine in senso decrescente?
Dovrei in pratica far andare il puntatore al primo rigo facendo scalare 
il resto di un rigo ogni volta.
Ancora grazie.
Ciao!

 Esiste la possibilità di creare l'ordine in senso decrescente?
Non ho mai approfondito il problema.
Se on ti interessassero le performance (ma occhio che il file prima o poi  
diventa grosso e allora sono dolori):
$file = file ( $fop );
array_unshift( $file, $ip.$data."/r" );
file_put_contents( $fop,  join ( '/n', $file ) );


Ok perfetto.
Solo che ora mi fai pensare... se volessi fare un file di log a parte 
l'uso di un file di testo che alternative avrei?
Una tabella del dbase dedicata al log non vale la pena, diventerebbe 
anch'esso pesante e mi aggiungerebbe query inutilmente. Di solito come 
ci si regola?
I portali con molte visite come fanno? Si crea un file di log per ogni 
giorno?
Mah.. :-/
ciao e grazie.



Una soluzione php è possibile, solitamente si schedula un crontab perchè  
esegua un logrotate ogni tot tempo.
Il file di log viene rinominato e zippato (log1.log.gz, log2.log.gz etc) e  
il log ricomincia da zero. In questo modo mantieni lo storico ma tieni il  
log di dimensioni ridotte.
Puoi eseguire il log rotate ogni giorno, ogni settimana, etc.
Tac
-- 
Using Operas revolutionary e-mail client: 
http://www.opera.com/mail/