in realtà sono costretto a usare entrambe le soluzioni sia il database che il file su cui scrivere per cui non posso escluderlo.
Se puoi usare un database, a che ti serve lavorare su un file? Quali vantaggi pensi di ottenere?
non mi è sembrato molto d'aiuto perchè è vero che potevo rendere esclusivo l'accesso ma chi non riusciva ad accedere non scriveva più e quindi i dati andavano persi.
Per quello è sufficiente un while() per fare in modo che lo script attenda fin tanto che il lock viene tolto dal file prima di eseguire la scrittura. Nessun dato viene perso.