【问题标题】:php - emergency shutdown command without waitphp - 无需等待的紧急关机命令
【发布时间】:2021-01-10 14:19:57
【问题描述】:

我想在我的网页中创建一个 php,按下按钮,作为对我的本地服务器的紧急关闭命令。

我现在正在使用以下 php 代码。它正在工作,但速度很慢。我在stackoverflow中找到了以下帖子,我正在考虑是否可以修改我的代码并使用它。

我需要按下按钮立即转移到重定向页面并在后台关闭服务器。

我的代码:

<?php
session_start();
unset($_SESSION['valid']);
unset($_SESSION['timeout']);

header("Location: https://www.google.com/");
system('sudo /sbin/shutdown -h now');
?>

stackoverflow 帖子:

php exec command (or similar) to not wait for result

【问题讨论】:

  • 你对“慢”的定义是什么?多久时间?除了物理拔掉插头外,这应该是最快的方法之一。
  • @ArSeN 需要 2-3 秒。浏览器一直在显示网页。它从 2-3 秒冻结,然后重定向。

标签: php exec


【解决方案1】:

更新了我的答案...

也许在你的关机命令末尾添加一个“&”可能会起到作用:

system('sudo /sbin/shutdown -h now &');

它在 Linux 系统上将命令推送到后台并立即将控制权返回给 shell 并继续在后台运行命令,这也可能使您的 system() 调用立即完成。

请注意,这并不能保证关闭确实有效(即,可能在服务器上引发了错误,您不会知道)。 同样正如 ArSeN 指出的那样,这不会加速关闭过程本身,但可能会立即完成 system() 调用,因此您的脚本将在您的服务器关闭时继续运行(并重定向)。

另外附带说明:这可能不是一件非常安全的事情...为什么您希望运行网络服务器的用户也可以控制关​​闭整个服务器...这意味着任何有权访问该脚本的人都可以关闭服务器......或者任何有权访问您的网络服务器的人......如果他们发现安全问题泄漏并能够注入 CLI 命令,他们也将能够关闭关闭你的服务器。

【讨论】:

  • 我的线会是什么样子?没有安全问题,因为它是本地和本地用户 2-3
  • 这不会更快地关闭服务器。
  • @ArSeN 我测试了它,结果是一样的。
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 2018-02-28
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 2011-04-18
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多