in pratica mi appoggio al db solo per ottenere la mutua esclusione sulla scrittura del file.Originariamente inviato da piero.mac
nel senso che l'idea e' buona .... bisognera' valutare la realizzazione e la performance rispetto ad una equivalente "cache" salvata in una tabella....
Una cosa tipo
SELECT @value = timestamp FROM semaphore WHERE id = 3;
UPDATE semaphore SET timestamp = NOW() WHERE id = 3 AND timestamp = @value;
sull'update controllo l'affected_row, essendo l'update di un record mutuamente esclusivo per definizione solo uno degli ipotetici N client connessi in simultanea avrà affected_row = 1, e sarà quello che procederà a scrivere sul file.
Al posto del timestamp forse basta anche un intero da incrementare.
Sul discorso cache salvata direttamente nel DB piuttosto che su disco, mi sa che dipende molto dalle risorse e dai settaggi del server caso per caso. In quelli condivisi spesso il collo di bottiglia è proprio sulle connessioni simultanee al DB, e la cache su file in questo senso ne aumenterebbe scalabilità e prestazioni.
Certo tenendo la cache su DB risolvo a priori qualsiasi problema di corruzione dei dati e mutua esclusione, ma avrei per qualsiasi richiesta l'overhead di connessione e query al database, cosa che invece non ho facendo un readfile() o un eventuale include.