Leggi alcuni testi sul blocco in PHP.
Tutti, principalmente, diretti a http://php.net/manual/en/function.flock.php.esclusione reciproca PHP (mutex)
Questa pagina parla dell'apertura di un file sul disco rigido !!
È davvero così? Voglio dire, questo rende il blocco molto costoso - significa che ogni volta che voglio bloccare dovrò accedere all'hard-disk) =
Posso più confortarmi con una notizia deliziosa?
Edit:
A causa di alcune risposte che ho ottenuto qui, voglio chiedere questo;
Il mio script verrà eseguito solo da un thread o più? Perché se è uno per uno, ovviamente non ho bisogno di un mutex. C'è una risposta concisa?
esattamente di cosa sto cercando di fare
Inviata da ircmaxell.
Questa è la storia:
Ho due server ftp. Voglio essere in grado di mostrare sul mio sito web quanti utenti online sono online.
Quindi, ho pensato che questi server ftp "POST" le loro statistiche su una certa pagina di script PHP. Supponiamo che l'URL di questa pagina sia "http://mydomain.com/update.php".
Nella pagina principale del sito Web ("http://mydomain.com/index.php") visualizzerò le statistiche cumulative (utenti online).
Questo è tutto.
Il mio problema è che non sono sicuro se, quando un server ftp aggiorna le sue statistiche mentre un altro lo fa, le informazioni si mescoleranno.
Come quando multi-threading; Due thread aumentano alcune variabili "int" allo stesso tempo. Non avverrà come previsto a meno che non si sincronizzi tra loro.
Quindi, avrò un problema? Sì no forse?
Possibile soluzione
Pensiero duro su di esso tutto il giorno, ho un'idea qui e voglio che dare la vostra opinione.
Come detto questi server ftp pubblicheranno le loro statistiche, una volta ogni 60 secondi.
Sto pensando di avere questo file "stats.php".
Sarà incluso nello script di aggiornamento che i server ftp visitano ("update.php") e nella pagina "index.php" dove i visitatori vedono quanti utenti sono online.
Ora, quando un server ftp si aggiorna, lo script su "update.php" modificherà "stats.php" con le nuove statistiche cumulative.
Prima leggerà le statistiche incluse in "stats.php", quindi accumulerà e quindi riscriverà quel file.
Se non sbaglio, PHP rileverà che il file ("stats.php") è stato modificato e carica quello nuovo. Corretta?
PHP supporta anche il threading? Guardando attraverso l'API di PHP non vedo nulla che sembra essere correlato ai thread ... – tloach
Per qualche ragione pensavo che PHP supporti il threading, nel modo in cui eseguirà lo stesso script per diversi client simultaneamente. – Poni
Quindi ho una variabile statica che manterrà alcuni dati, che viene aggiornato da diverse fonti e che viene inviato a diversi client. Questo potrebbe accadere simultaneamente, quindi ho bisogno di un modo per sincronizzare. – Poni