2012-10-26 3 views
1

Cygwin을 사용하여 Windows 서버에 명령을 보내고 있습니다. 며칠 전에 질문을했지만 답변을받지 못했습니다. phpseclib에 큰 문제가 있으며 $ ssh-> write(); 명령. 나는 $ ssh-> exec()를 사용했다; 하지만 서버로 보낸 명령은 최대 20 분이 소요될 수있는 게임 서버 파일을 다운로드하고 잠시 후 FastCGI 시간 제한 설정을 초과하기 때문에 PHP 페이지가 시간 초과됩니다. 그래서, 나는 $ ssh-> write(); 나를 위해 그것을 해결할 수 있지만 서버에 보내는 명령이 실행되지 않습니다. 여기 내가 사용하는 노력하고있어 간부와 쓰기에 대한 명령입니다 : 다음 시간이 초과

$ssh->exec('C:/hldsupdatetool/hldsupdatetool -command update -game ".$game." -dir ".$dir'); 

이 코드 영원히로드하고. FastCGI의 제한 시간 설정을 최대 1 시간으로 변경하여이 문제를 해결했습니다. 이 명령은 서버에서 실행됩니다.

$ssh->write('C:/hldsupdatetool/hldsupdatetool -command update -game ".$game." -dir ".$dir."\r\n"); 

이 명령은 서버에서 실행되지 않습니다 :

내가 보내려고하지만 실행하지 않습니다 쓰기 명령입니다. 내가 그것을 반향 출력 할 때 얻는 응답은 "1"입니다.

도움이 되었으면 좋겠습니다. 현재 오픈 소스 게임 서버 제어판을 만들고 있습니다.

미리 감사드립니다.

최고 감사합니다. 탐.

답변

0

$ ssh-> write()의 응답을 읽으려면 $ ssh-> read()를 수행해야합니다. 예. 사실 반환하고 ssh $> 기록() 때문에

http://phpseclib.sourceforge.net/ssh/examples.html#interactive

$하고 ssh> 기록은 (1)를 출력한다.

어쨌든, 당신이 시도 할 수있는 뭔가 ... $ ssh-> setTimeout (5) 또는 뭐든간에.

Windows 명령을 백그라운드로 보낼 수 있는지 잘 모르겠습니까? 리눅스에는 nohup과 &이 있습니다.

관련 문제