Se você estiver usando ControlMaster auto
, você está já reutilizando a conexão TCP existente , mas o estabelecimento da conexão TCP é muito rápido de qualquer maneira.
O atraso de 80 ms é provavelmente introduzido por uma combinação de:
- php
shell_exec
iniciando um novo shell (tenteexec
?) - a sobrecarga adicional de configurar o novo canal ssh através da conexão existente
- Executando seu comando no servidor remoto através de seu novo canal ssh
Se você precisar de respostas mais rápidas, primeiro avalie cada uma delas individualmente e trabalhe para reduzir a latência na parte que está lenta. Se você descobrir que # 2 está atrasando você como você suspeita, você pode tentar enviar seus comandos através de um canal ssh permanente existente, possivelmente através de um pipe nomeado com seu comando remoto em um read- while loop (as advertências levantadas por @symcbean serão aplicadas).
Algo parecido com isto
mkfifo /tmp/f_in
mkfifo /tmp/f_out
tail -f /tmp/f_in | ssh [email protected] 'bash -c "while read name; do echo hello \$name; done"' > /tmp/f_out &
time response=$(head -n 1 /tmp/f_out & echo dwurf > /tmp/f_in); echo $response
Nada disso será tão rápido quanto criar um serviço de rede para consultar informações. Eu também espero que não seja confiável.