如何检查 php 内置服务器是否正在运行

如何检查 php 内置服务器是否正在运行

PHP 的最新版本有一个内置的 Web 服务器(用于非生产环境),可以通过 启动php -S [...]

在尝试启动它之前,如何检查它是否已在服务器上运行?

我意识到最不友好的方法是尝试启动它并留意错误消息Failed to listen on [...],但我认为可能有一种更干净的方法:-)

编辑:我忘了说,我最终希望能够在脚本中检查这一点,并且仅在服务器尚未启动时才启动它。我还忘了说,我正在寻找 Linux 的解决方案,但当然也欢迎 Windows 解决方案,以防有一天其他人也会寻找它 :-)

答案1

由于我对 Paolo 的答案的编辑被拒绝,因此这里有一个更完整的答案:

ps aux | grep php

如果 php 当前正在运行,此命令将输出如下内容:

pi        3245  0.0  0.5  21400  2416 pts/0    S    Jan29   0:02 php -S localhost:8000 -t /path/to/php/docroot
pi        3518  0.0  0.3   5220  1712 pts/0    S+   00:42   0:00 grep --color=auto php

第二行可以忽略,因为它只是自引用搜索命令。此脚本将检查服务器是否正在运行,如果没有运行,则启动它:

if ! ps aux | grep -v grep | grep -qs 'php -S localhost:8000';
then
  php -S localhost:8000 -t /path/to/php/docroot &>/dev/null &
fi

答案2

正如 Michael Hampton 所建议的那样,类似的命令ps aux | grep php将显示 PHP 的网络服务器是否已启动。

相关内容