phpバックエンドにコマンドを送信するためのajax postメソッドを発行します。 1つは「再起動」です。タイムアウトを(クライアント側)スクリプトが終了する前にPHP応答が送信されない
<?php
set_time_limit(0);
$json = file_get_contents('php://input');
$obj = json_decode($json);
switch ($obj->{'action'}) {
case "reboot":
$data = '{"success" : true}';
ob_start();
header('Content-Type: application/json');
echo json_encode($data);
ob_end_flush();
ob_flush();
flush();
exec("sudo reboot");
break;
default:
$data = '{"success": "fail"}';
break;
}
AJAX呼び出しをし、答えを受けることはありません:私は、スクリプトが終了する前に戻って答えを取得しようとしています。 もちろん、rebootコマンドにわずかな遅延を追加することはできますが、私のコードが動作しない理由を理解したいと思います。
私はlighttpdとfast-cgiを備えたRPi上で実行しています。
「再起動」をここから呼び出さない方が良いでしょう。他のすべてを行い、あなたのajaxコールバックに戻り、コールバックの中から、リブートするajax経由で別のPHP関数を呼び出します。さらに、私が知る限り、ブラウザベースのPHP関数呼び出しから "システム"コマンドを発行することはできません。 –
実際には動作します...私は 'www-data'に再起動と停止のsudo権限を与えました。とにかくあなたの "回避策"は私より優れています:) – Mark