Per far si che la mia applicazione esegua una volta al giorno un'operazione sul db, ho messo sulle homepage delle diverse figure che possono loggarsi al sito un piccolo codice che dovrebbe richiamare la funzione che mi serve solo dietro una specifica condizione.
Il codice che ho usato è questo
codice:
if(fileatime("..".DS."accesso".DS."cleanup.txt") < (time() - 86400)) {
	if(pulisci_prestazioni($db)) {
		touch("..".DS."accesso".DS."cleanup.txt");
	}
}
Provo a spiegarlo nel caso non fosse chiaro.
partendo dalla cartella che contiene le homepage, al percorso ../accesso/cleanup.txt si trova un file di testo vuoto.
L'algoritmo che voglio applicare è:
- se il file cleanup.txt è stato acceduto l'ultima volta più di 24 ore fa (ovvero time()-86400)
---- esegui la funzione pulisci_prestazione() e se ha successo
-------- accedi al file cleanup.txt in modo che l'ultima data e ora di accesso siano quelle attuali

In questo modo tutte le volte che si accede alle pagine con questo codice, il primo if nelle successive 24 ore dovrebbe dare false e saltare tutto il resto.
Bene, questo non accade, ma accade invece quest'altra cosa:
mi loggo all'applicazione come amministratore, accedo alla pagina con questo codice e viene giustamente eseguita la funzione pulisci_prestazioni(), vado in un'altra pagina, dopo un po' torno su quella col codice e ok, la pulizia non viene eseguita (me ne accorgo perché sono in locale e controllo l'ultimo accesso al file cliccandoci col destro e leggendo le proprietà).
Faccio il logout, mi riloggo con l'account di un utente, vado sulla pagina dell'utente in cui è presente questo codice e la funzione pulisci_prestazioni() viene eseguita di nuovo, anche se sono passati 2 minuti da quando è stato effettuato l'accesso al file dal codice presente sulla pagina dell'amministratore.

Sembra come se la condizione del primo if dipenda anche da qualcosa legato alla sessione oltre che all'ora di accesso al file.
Dove può essere l'inghippo?