CLI de PHP: obtenga la entrada del usuario mientras sigue haciendo cosas en segundo plano

Estoy trabajando en un juego, escrito en PHP y que se ejecuta en una consola. Piensa en los antiguos MUD y otros juegos de texto, ¡incluso en un arte ASCII!

De todos modos, lo que estoy tratando de hacer es que sucedan cosas y al mismo tiempo aceptar las opiniones del usuario.

Por ejemplo, digamos que es un juego para dos jugadores y el Jugador 1 está esperando que el Jugador 2 haga un movimiento. Esto se hace fácilmente simplemente escuchando un mensaje.

¿Pero qué pasa si el jugador 1 quiere cambiar algunas opciones? ¿Qué pasa si quieren ver detalles sobre aspectos del estado del juego? ¿Qué hay de conceder el juego? Hay muchas cosas que un Jugador puede querer hacer mientras espera que su oponente haga un movimiento.

Desafortunadamente, lo mejor que tengo ahora es el hecho de que Ctrl + C elimina por completo el programa. El otro jugador se deja colgando, hasta que se interrumpe la conexión. Ah, y el juego está completamente perdido.

Recibo entrada de usuario confgets(STDIN). Pero esto bloquea la ejecución hasta que se ha recibido la entrada (lo que suele ser una buena cosa).

¿Es incluso posible que un programa de consola como este maneje la entrada y salida simultáneamente? ¿O debería mirar otra interfaz?

Respuestas a la pregunta(3)

Su respuesta a la pregunta