在Centos7.x上如何以后台服务方式运行PHP文件

我知道在Centos的远程命令行模式下通过php XXX.php方式去执行PHP文件。
但这种方式一旦关闭终端,就会停止。我想把PHP文件以后台服务方式运行,不知道怎么写,求解答。谢谢

红颜莎娜
浏览 616回答 8
8回答

波斯汪

(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
打开App,查看更多内容
随时随地看视频慕课网APP