-
波斯汪
(1)如果你要执行的php文件是定时执行的,通过Linux crontab定时执行任务,基本格式为 * command分 时 日 月 周 命令
(2)如果你是不断要在后台跑脚本,也可以借助一些进程控制工具,譬如Supervisor,举个之前在ubuntu配置的例子://如果没有安装supervisor,要先安装,已经安装的跳过这一步$ sudo apt-get install supervisor
$ cd /etc/supervisor/conf.d//创建一个进程配置文件$ sudo vi laravel_queue_order.conf
//内容如下:[program:yourProgramName]process_name=%(program_name)s_%(process_num)02dcommand=php yourCommanddirectory=/var/www/yourprojectautostart=trueautorestart=truenumprocs=4stdout_logfile=/var/www/yourproject/storage/logs/yourProjectLogName.log
//进程数numprocs由自己确定
//开启进程sudo service supervisor startsudo supervisorctl updatesudo supervisorctl rereadsudo supervisorctl start yourProgramName
//可以使用htop查看进程是否正确运行中$ htop//如果有出现command为php yourCommand的进程,代表进程启动成功
-
牧羊人nacy
试试守护进程啊 老哥
class deamon
{
public function _deamon() {
$pid = pcntl_fork();
if($pid == -1) throw new Exception('fork fail');
else if($pid > 0) {
exit('parent gone'.PHP_EOL);
}
if(posix_setsid() === -1) throw new Exception('set sid fail');
chdir('/tmp/deamon');
umask(0);
echo "child process id:" . posix_getpid().PHP_EOL;
while(1) {
// 需要执行的代码
}
}
}
不想执行的时候, kill pid即可
-
qq_花开花谢_0
有几个可用方法:
&:当前 shell 进程下生成子进程运行
php run.php &
缺点:当前 session 断开时,会向其子进程发出 hang up 信号,导致挂起中断
nohup 配合 &:忽略挂起信号运行
nohup php run.php &
解决 & 中断的问题。
setsid:让进程在一个新的 session 下运行,也可以避免因为当前 session 中断,而引起的退出
supervise:是 daemontools 的一个工具,可以用来监控管理 linux 下的应用程序运行情况,在应用程序出现异常时,supervise 可以重新启动指定程序。
具体应用哪个需要看实际需求,
如果是很快执行完的后台进程,可以直接用 &
如果是需要执行一段时间(这段时间内会退出当前的 shell),则可以考虑配合 nohup 或者 setsid 来运行后台进程。
可以参考我的一篇共享的一篇文章:Linux 技巧:让进程在后台可靠运行的几种方法
文中相对全面的总结了 linux 后台运行进程的几种方法,并做了对比。阅读此文,可以扩充 linux 后台运行进程的相关知识,并明白 nohup 和 & 的区别。
-
慕仙森
nohup php xxx.php > xxx.log &
-
RISEBY
CentOS 7使用systemd管理系统服务,你需要花点时间去看看systemd的官方文档
-
猛跑小猪
不是很懂就别用编译安装应用,如果不是编译安装的话。使用yum安装,启动、停止都很简单,还好用。
-
撒科打诨
当然用Linux crontab
-
阿波罗的战车
linux crontab或者screen