PHP CLI - obter entrada do usuário enquanto ainda faz as coisas em segundo plano

Estou trabalhando em um jogo, escrito em PHP e executado em um console. Pense nos antigos MUDs e em outros jogos baseados em texto, até mesmo em algumas artes ASCII!

De qualquer forma, o que eu estou tentando fazer é ter coisas acontecendo enquanto também aceito a entrada do usuário.

Por exemplo, digamos que é um jogo de dois jogadores e o Jogador 1 está esperando o Jogador 2 fazer uma jogada. Isso é feito facilmente apenas por ouvir uma mensagem.

Mas e se o jogador 1 quiser mudar algumas opções? E se eles quiserem ver detalhes sobre aspectos do estado do jogo? Que tal conceder o jogo? Há muitas coisas que um Jogador pode querer fazer enquanto espera que seu oponente faça uma jogada.

Infelizmente, o melhor que tenho agora é o fato de que Ctrl + C mata completamente o programa. O outro jogador é deixado pendurado até que a conexão seja interrompida. Ah, e o jogo está completamente perdido.

Eu recebo entrada do usuário comfgets(STDIN). Mas isso bloqueia a execução até que a entrada tenha sido recebida (o que geralmente é bom).

É possível que um programa de console como esse manipule entrada e saída simultaneamente? Ou devo apenas olhar para alguma outra interface?

questionAnswers(3)

yourAnswerToTheQuestion