Salve, sto progettando un sistema di caching su file di dati provenienti dal DB.
Appurato il fatto che su flock() non si può fare affidamento perché fallisce in una moltitudine di situazioni (situazioni anche abbastanza comuni), rimane il problema della lettura / scrittura concorrente su file, in maniera sicura.

Io ho pensato questo metodo, vorrei sapere che ne pensate.
- In scrittura, viene usato un record sul database per ottenere un accesso esclusivo. Il metodo è funzionante e sicuro ovunque a prescindere da OS e configurazione. Il degrado di prestazioni è minimo perché la riscrittura del file di cache è necessaria solo quando devo comunque rileggere i dati nuovi dal DB, quindi già avevo una connessione obbligata.

- La scrittura avviene su un file temporaneo diverso da quello di cache, a scrittura avvenuta viene fatto l'unlink() del file originale e poi il rename().

- Come ulteriore verifica di integrità (nel caso lo script di scrittura venisse interrotto per qualsivoglia motivo), potrei scrivere dentro al file, all'inizio, il numero di byte del pacchetto di dati che ci andrò a scrivere (o una crc32 se proprio uno vuol essere caccoloso), da verificare poi in lettura.


Opinioni o tecniche alternative (purché rispondano agli stessi requisiti)?

Grazie.