PHP 命令行模式后台执行指南
在日常开发和运维中,常常需要在后台执行 PHP 脚本,尤其是处理爬虫任务、定时任务或长时间运行的进程。本文将介绍如何使用 nohup
命令将 PHP 脚本在后台运行,并将输出重定向到日志文件,以便于监控和管理。
使用 nohup
后台执行 PHP 脚本
nohup
命令用于在关闭终端后继续运行指定的命令。结合 &
符号,可以将命令放入后台执行。
示例命令
nohup php spider.php 1 > /home/wanghui3/spider_1.log 2>&1 &
spider.php
:要执行的 PHP 脚本。1
:传递给脚本的参数,可在脚本中通过$argv[1]
获取。> /home/wanghui3/spider_1.log
:将标准输出重定向到指定的日志文件。2>&1
:将标准错误输出也重定向到标准输出,即同一个日志文件。&
:将命令放入后台执行。
这样,即使关闭终端,脚本也会继续在后台运行,输出和错误信息会被记录到日志文件中。
在脚本中获取命令行参数
在 PHP 脚本中,可以使用 $argv
数组获取命令行参数。
<?php
$provid = $argv[1];
// 后续使用 $provid 进行相应的处理
?>
$argv[0]
通常是脚本本身的名称,实际的参数从 $argv[1]
开始。
查看实时执行结果
可以使用 tail
命令实时查看日志文件的最新输出,以监控脚本的运行情况。
tail -f /home/wanghui3/spider_1.log
这将持续输出日志文件的新内容,便于实时观察脚本的执行状态。
查看当前进程
要查看当前运行的相关进程,可以使用 ps
命令结合 grep
进行筛选。
ps -aux | grep spider
或
ps -ef | grep spider
这将列出所有包含 "spider" 的进程信息,便于确认脚本是否正在运行。
结束后台进程
如果需要手动结束后台运行的脚本,可以先查找其进程 ID(PID),然后使用 kill
命令终止。
ps -ef | grep spider
找到对应的 PID 后,执行:
kill PID
如果进程没有响应,可以使用强制终止:
kill -9 PID
总结
通过使用 nohup
命令结合后台执行符 &
,可以方便地在后台运行 PHP 脚本,并将输出重定向到日志文件,便于监控和管理。结合 tail
查看日志和 ps
管理进程,可以有效地控制脚本的执行。
这种方式适用于需要长时间运行或不希望被终端关闭影响的脚本任务。合理使用这些命令,可以提升脚本的稳定性和可维护性。