React PHP fornisce il ciclo di eventi primario dell'applicazione; devi comunque scrivere il tuo codice in modo non bloccante poiché è tutto su un thread. Le possibili soluzioni a tutto questo ruotano attorno all'uso di php in modo diverso da quello che sono sicuro che la maggior parte degli sviluppatori PHP sono abituati a ... Anche se React PHP fornisce il ciclo principale; la maggior parte delle librerie React PHP sono le implementazioni per socket/streaming/promesse/ecc. Questi hanno tutti metodi impiegati per ottenere un accesso non bloccante all'I/O; in genere tramite l'utilizzo di stream_set_blocking
(http://php.net/manual/en/function.stream-set-blocking.php)
Le altre opzioni includono la programmazione di qualcosa di simile a un FSM (https://en.wikipedia.org/wiki/Finite-state_machine); che gli consente di aggiornare continuamente lo stato attuale mentre procede; ogni volta consentendo l'esecuzione di determinati blocchi di codice, quindi rinunciando a qualsiasi altra parte del ciclo. Implementare essenzialmente il proprio time-slicing (https://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice)
Un'altra opzione è implementare i thread (http://php.net/manual/en/book.pthreads.php) che di solito non è abilitato di default; E l'ultima opzione a cui posso pensare è usare il controllo di processo su fork/start/control altri processi (http://php.net/manual/en/intro.pcntl.php) che è abilitato solo su sistemi * nix; che consente al CPU host di controllare il time slicing; ti verrà richiesto di configurare la tua applicazione in modo da essere thread-safe, comunicare con code di messaggi o qualche altro meccanismo.
tldr; Usa l'architettura dell'applicazione per non causare il blocco di php, imposta i tuoi stream in modo da non bloccarli o usa il controllo thread/process per gestire il tuo multi-threading.
possibile duplicato di [ReactPHP è davvero asincrono?] (Http://stackoverflow.com/questions/22502118/reactphp-is-truely-asynchronous) – Blizz