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?