Il Senario:
Hai un file con una stringa (valore medio della frase) su ogni riga. Per motivi di argomenti, diciamo che questo file ha una dimensione di 1 Mb (migliaia di righe).
Hai uno script che legge il file, cambia alcune stringhe all'interno del documento (non solo aggiungendo ma anche rimuovendo e modificando alcune linee) e poi sovrascrive tutti i dati con i nuovi dati.
Le domande:
-
Il "server" PHP, OS o httpd ecc. dispone già di sistemi per bloccare problemi come questo (lettura / scrittura a metà di una scrittura)?
-
Se lo fa, spiega come funziona e fornisci esempi o collegamenti alla documentazione pertinente.
-
In caso contrario, ci sono cose che posso abilitare o impostare, come il blocco di un file fino al completamento di una scrittura e il fallimento di tutte le altre letture e / o scritture fino al termine della scrittura precedente?
Le mie ipotesi e altre informazioni:
-
Il server in questione esegue PHP e Apache o Lighttpd.
-
Se lo script è chiamato da un utente e sta scrivendo a metà strada nel file e un altro utente legge il file in quel momento esatto. L'utente che lo legge non riceverà il documento completo, poiché non è stato ancora scritto. (Se questa ipotesi è sbagliata, correggimi)
-
Mi interessano solo la scrittura e la lettura di PHP in un file di testo, e in particolare, le funzioni "fopen" / "fwrite" e principalmente "file_put_contents". Ho esaminato la documentazione "file_put_contents" ma non ho trovato il livello di dettaglio o una buona spiegazione di cosa sia o non sia il flag "LOCK_EX".
-
Lo scenario è un esempio di uno scenario peggiore in cui presumerei che questi problemi siano più probabili, a causa delle grandi dimensioni del file e del modo in cui i dati vengono modificati. Voglio saperne di più su questi temi e non voglio o ho bisogno di risposte o commenti come "usa mysql" o "perché lo stai facendo" perché non lo sto facendo, voglio solo imparare a leggere / scrivere file con PHP e non sembra che stia cercando nelle giuste posizioni / documentazione e sì capisco che PHP non è la lingua perfetta per lavorare con i file in questo modo.