Mentre si esegue un ciclo infinito in PHP su Apache, altre pagine/script si bloccano (impiegano un tempo per caricarsi) finché non interrompo l'esecuzione dello script. Tuttavia, altre pagine continuerebbero ad essere eseguite su una sessione utente o browser diversa. Questo può essere risolto?Il ciclo infinito PHP impedisce l'accesso ad altri script?
6
A
risposta
4
Questo è un problema di condizioni di gara.
Una volta effettuata la sessione, un file allegato all'ID di sessione viene aperto con autorizzazioni restrittive (bloccato per la lettura e la scrittura). Se viene chiamato un altro session_start()
, attenderà il sblocco del file di sessione, per evitare che il secondo script modifichi in modo asincrono la sessione.
Dai un'occhiata a this article che spiegano meglio di me cosa succede.
+4
Questa non è la definizione di una "condizione di competizione", è una semplice risorsa bloccata. Risposta corretta però. – deceze
Problemi correlati
- 1. Come interrompere il ciclo infinito nello script bash con garbo?
- 2. Interrompe il ciclo infinito nel nodo repl?
- 3. C# galleggiano ciclo infinito
- 4. Ciclo infinito di layoutAttributesForElementsInRect
- 5. d == 9000000000000000000d ciclo infinito
- 6. Errore, ciclo infinito
- 7. Ciclo infinito in EventQueue.isDispatchThread()
- 8. Javascript eredità ciclo infinito
- 9. Perché questo script Python crea un ciclo infinito? (ricorsione)
- 10. Come evitare il ciclo infinito Storyboard modale
- 11. L'autenticazione di base con PHP fornisce un ciclo infinito
- 12. Fermare un ciclo infinito su un server remoto PHP
- 13. Terminare un ciclo while infinito
- 14. ciclo infinito nella programmazione funzionale?
- 15. Animazione CSS3 - ciclo infinito fluido
- 16. Creazione di un ciclo infinito
- 17. Come rompere un infinito per il ciclo (;;) in C?
- 18. Altri editor di script?
- 19. Come terminare il ciclo infinito di "modifica" in VBA
- 20. uccidendo un ciclo infinito in Java
- 21. exec() causa un ciclo infinito di avvio del programma richiesto
- 22. ciclo infinito con espressione angolare vincolante
- 23. Java: ciclo infinito usando scanner in.hasNextInt()
- 24. StreamReader.ReadLine si bloccherà in un ciclo infinito
- 25. L'aggiunta del ciclo For impedisce l'errore OutOfMemoryError
- 26. Applicazione ciclo infinito con ProcessMessage riuscito errore
- 27. Perché "window = window.parent;" creare un ciclo infinito?
- 28. Ripeti rapidi TakeWhile provoca un ciclo infinito
- 29. Garbage collection dell'oggetto creato nel ciclo infinito
- 30. Come prevenire un ciclo infinito in ASP.net
Quante CPU ci sono nella vostra macchina? Quanti thread sono in esecuzione in Apache? Avrei pensato che più script sarebbero stati in grado di funzionare contemporaneamente, in generale. Forse hai bisogno di: http://httpd.apache.org/docs/2.2/mod/worker.html (Sto assumendo che il tuo "infinito" sia solo un "while (1);" o alcuni di essi, e non qualcosa di più complesso che potrebbe causare conflitti di blocco con il tuo main.php) –
Il tuo script infinito richiede sessioni? In caso contrario, è possibile eseguirlo dalla riga di comando. Anche se php potrebbe non essere lo strumento giusto per mantenere un programma in esecuzione ... – jeroen
Si potrebbe provare a utilizzare un ID di sessione dedicato/speciale per il tuo script in esecuzione infinita. Assicurati che non possa scontrarsi con il tuo normale ID di sessione – jeroen