我发出一个ajax post方法将命令发送到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上运行它。
答案 0 :(得分:0)
您可以定义一个每秒运行的cron作业,并检查一些设置,重启或类似的东西。如果这是真的,则发出重新启动。您的AJAX调用发出的脚本可以将此设置设置为true,以便脚本可以响应客户端。重新启动服务器后,重新启动设置可能会自动设置为false。但这似乎是一种极不安全的方法,因为任何用户都可能发送此类请求,导致您的服务器无法使用。