在PHP中使程序在后台运行,可以通过以下几种方法实现:
1. 使用 `nohup` 和 `&` 运行PHP脚本
在命令行中,你可以使用 `nohup` 命令和 `&` 符号来让PHP脚本在后台运行。
```bash
nohup php your_script.php > /dev/null 2>&1 &
```
这里 `your_script.php` 是你的PHP脚本文件名,`>/dev/null 2>&1` 表示将标准输出和标准错误都重定向到 `/dev/null`,这样就不会在终端显示任何输出。最后的 `&` 表示在后台运行这个命令。
2. 使用 `screen` 或 `tmux`
`screen` 和 `tmux` 是两个强大的终端会话管理器,可以让你的程序在会话断开时继续运行。
使用 `screen`:
```bash
screen -S my_session
php your_script.php
然后按 Ctrl+A D 退出screen会话,但程序仍然在运行
```
使用 `tmux`:
```bash
tmux
php your_script.php
然后按 Ctrl+B D 退出tmux会话,但程序仍然在运行
```
3. 使用 `supervisor` 或 `systemd`
使用 `supervisor`:
`supervisor` 是一个进程管理工具,可以帮助你监控和管理后台进程。
安装 `supervisor`:
```bash
sudo apt-get install supervisor
```
然后,创建一个配置文件 `/etc/supervisor/conf.d/your_script.conf`:
```ini
[program:your_script]
command=php /path/to/your_script.php
autostart=true
autorestart=true
stderr_logfile=/var/log/your_script.err.log
stdout_logfile=/var/log/your_script.out.log
```
更新 `supervisor` 配置并启动你的脚本:
```bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start your_script
```
使用 `systemd`:
`systemd` 是一个系统和服务管理器,也可以用来管理后台进程。
创建一个服务文件 `/etc/systemd/system/your_script.service`:
```ini
[Unit]
Description=Your PHP Script Service
[Service]
ExecStart=/usr/bin/php /path/to/your_script.php
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
```
然后,启用并启动你的服务:
```bash
sudo systemctl enable your_script.service
sudo systemctl start your_script.service
```
选择适合你需求的方法来使PHP脚本在后台运行。