AJAX 响应在重新启动 Raspberry Pi 之前丢失

我在 Raspberry Pi 4 上有一个 LAMP 服务器,其网页正在对重新启动 pi 的 php 脚本进行 AJAX 调用。我的脚本 echo 是一个返回网页的 JSON 字符串响应,表明它正在准备重新启动,然后执行“sudo restart”命令。该脚本在 100% 的时间内运行并始终重新启动,但在 pi 重新启动之前回显并不总是完全传输,这会导致错误。


示例代码:


<?php


  ... other code    


  $tags['status'] = "restarting";

  echo json_encode($tags);


  $cmd = "sudo reboot";

  exec($cmd);


?>

我尝试在 echo 之后添加 sleep() 语句,但这会停止整个脚本,并且直到睡眠之后才会回显。我还尝试将 sleep 添加到 exec 命令中,例如“sleep 5; sudo restart”,但这也不起作用。


如果我注释掉重新启动语句,我 100% 都会得到回显响应。这告诉我我有一个时间问题。有没有办法确保在重新启动之前完全处理回显?


我已经寻找答案,但没有找到任何有帮助的东西。


一只甜甜圈
浏览 84回答 1
1回答

UYOU

我曾经有过类似的事情,并决定使用 2 个 ajax 调用:执行任务并发回关闭消息。收到消息后,显示并等待几秒钟,然后发送重新启动请求。这防止了竞争条件。
打开App,查看更多内容
随时随地看视频慕课网APP