Bonjour 私はPHPとphpseclibでルータに接続しようとしています。SSH経由でAjaxリクエストで接続しようとしているPHPスクリプトを中止しますか?
<?php
function connect_ssh(){
set_time_limit(10);
ob_start();
register_shutdown_function('shutdown');
if(connection_aborded()){
die();
}
function shutdown(){
print ob_get_clean();
}
$res = array();
$a = new Net_SSH2($host);
$a->write("show time\r\n");
try{
$res[] = $a->read('\r\n');
$res[] = $a->read('\r\n');
$res[] = $a->read('#');
} catch(Exception $e)
{
ob_flush();
var_dump(compact('e','res'));
}
} return json_encode(compact('e','res'));?>
イムjQueryのを使用してこの関数を呼び出す:
$.ajax({
url:'myURL',
data: null,
type: 'POST',
dataType: 'json',
success: function(z){ console.log(z);}
});
パラメータがない場合には、時々、 "Net_SSH2 ::読んで()" 失敗したため、私はdemandeに私のPHPスクリプトを停止したいと思いますrouteurの答えにあります。 (すなわち、構文エラーがある場合)。
より頻繁に、あなたの助けのための
おかげで...私は失敗した要求の後に自分のWebサーバーに再接続することはできないと私は長い時間を待つ、あるいはApacheの再起動する必要があります。 ..
ハム、私は理解していない...私の問題は、$ a-> read()関数が失敗した場合、PHPスクリプトが終了しないということです...キーボードのESCAPEを押してもSSHセッションが残っています。再試行できるようにApacheを再起動する必要があります... – Franquis
編集を確認してください、私は間違いがあるかもしれないので、テストしませんでした。それは私が何を意味するかを示しています。 – AndyL