Nginx con PHP non thread sicuro ... Posso programmare con l'assunzione di nessuna condizione di razza quando persiste?

StackOverflow https://stackoverflow.com/questions/9474630

Domanda

Potrei fraintendere cosa significhi che Nginx sia basato sugli eventi opposti al processo guidato (quindi non abbiamo mod_php in ogni thread come farebbe Apache). Suppongo che poiché ho 1 istanza di PHP-CGI in esecuzione per tutti i thread di lavoratori Nginx che tutte le esecuzioni PHP saranno sincroni. Questo significa che quando accedo agli oggetti dal database non devo preoccuparmi delle condizioni di gara quando si tratta di salvare i dati?

Non sono sicuro di avere il pensiero corretto o sono completamente off-base.

Grazie. Sono nuovo a Web-Programmazione/database/Web-server

È stato utile?

Soluzione

"Evento guidato" significa che l'applicazione "si trova lì" in attesa di eventi per guidare ciò che succederà dopo. Gli eventi tipici sono varie forme di attività del mouse o della tastiera.

Al contrario, "Process Driven" (spesso "Programmazione procedurale") significa semplicemente che esiste un programma "Watching" per le cose, costantemente sfogliando tutto ciò che dovrebbe fare.

Puoi codificare entrambi allo stesso tempo, ma farlo è "un esercizio avanzato" - o, almeno, alcuni lo pensano.

Ora, il grande problema delle condizioni di gara è davvero tutto sulla questione di cosa possa accadere l'entanglement. Con i database, ecco un esempio perfetto: se codifica lo stato dell'errore di reso in una varibile globale e c'è una sovrapposizione temporale tra le attività nel codice (spesso accade in ambienti "eventi guidati", ma può avvenire anche nella programmazione puramente procedurale) può ricevere il messaggio di errore sbagliato. Immagina se un thread che ha fatto accadere qualcosa avesse un errore e un thread più veloce non ha avuto errori, ma il thread più veloce è arrivato in seguito e impostare lo stato sul successo; C'è una condizione che la programmazione "thread sicura" eviterebbe. Questo è solo un esempio di "condizione di gara".

Finché le azioni di ogni thread sono indipendenti, non hai condizioni di gara per se - tutto dipende dalla logica dell'applicazione e dalle sue esigenze - e nessuno qui può dirti cosa possono essere, solo lo sviluppatore! ... è un sistema di prenotazione della compagnia aerea? ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top