Su un hosting ho posizionato uno script che scrive su diversi file .txt le visite che riceve il sito. A causa della lunghezza non posso esporvi interamente il programma. Il problema risiede però in questo pezzo che vi posto qui di seguito.
Codice PHP:
if (file_exists ( $ipUnici )) {
$current = file_get_contents ( $ipUnici );
$current2 = $current . $ip_address . " | " . $now . " \r\n";
if (strpos ( $current, $ip_address ) === false) {
file_put_contents ( $ipUnici, $current2, LOCK_EX );
}
} else {
$current = $ip_address . " | " . $now . " \r\n";
file_put_contents ( $ipUnici, $current, LOCK_EX );
//codice aggiunto per verificare bug in questo punto del codice
//pare che lo script ogni tanto cancelli il file ipUnici.txt
//ma non si riescono a comprendere le ragioni
$init = $now . " : Inizializzazione file! \r\n";
file_put_contents ( $ipUnici.".txt", $init, FILE_APPEND | LOCK_EX );
//se accanto ad ipUnici.txt compare ipUnici.txt.txt allora
//risulta possibile che questa parte del codice presenti delle problematiche
}
Lo script funziona in questo modo:
Se il file $ipUnici esiste aggiungi ad esso l’IP $ip_address solo se unico diversamente crea $ipUnici e mettici dentro $ip_address senza verificarne l’unicità.
Il file $ipUnici è di questo tipo:
68.180.231.62 | 2016-07-18 05:00:40am
66.249.65.52 | 2016-07-18 09:51:43pm
…
157.55.39.210 | 2016-07-20 08:58:38pm
115.28.43.234 | 2016-07-20 09:47:40pm
…
157.55.39.37 | 2016-09-06 12:03:55pm
La cosa strana è che il programma funziona, in questo momento lo sto testando con degli amici e lo script non fa una grinza. Il bug risiede nell’affidabilità. Vedete la prima riga?
68.180.231.62 | 2016-07-18 05:00:40am
Secondo a quanto vi ho detto la data dovrebbe coincidere con l’apertura del sito ma non è così. Infatti ogni tanto (1 volta all’anno o una volta ogni 6 mesi) il file $ipUnici si svuota senza che questa riga di PHP venga letta:
Codice PHP:
$init = $now . " : Inizializzazione file! \r\n";
In pratica ogni tanto le visite uniche totali ritornano a zero. Ma come è possibile? C’è forse un limite alla dimensione di queste variabili? Non so più cosa pensare… Un inchino a chi saprà risolvere il problema…
ciao