首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

保持PHP脚本作为守护进程运行的最佳方法是什么?

保持PHP脚本作为守护进程运行的最佳方法是使用Supervisor进行进程管理。Supervisor是一个开源的进程管理工具,可以帮助您监控、启动、停止和重新启动PHP守护进程。以下是使用Supervisor的步骤:

  1. 安装Supervisor: 在终端中输入以下命令来安装Supervisor:sudo apt-get install supervisor
  2. 创建一个Supervisor配置文件: 在/etc/supervisor/conf.d目录下创建一个新的配置文件,例如my_php_daemon.conf。在该文件中,添加以下内容:[program:my_php_daemon] command=/path/to/your/php/script.php directory=/path/to/your/php/script/directory user=your_username autostart=true autorestart=true stderr_logfile=/var/log/supervisor/my_php_daemon.err.log stdout_logfile=/var/log/supervisor/my_php_daemon.out.log其中,command指定您的PHP脚本的路径,directory指定脚本所在的目录,user指定运行脚本的用户。autostartautorestart选项用于指定Supervisor在启动时自动启动该脚本,并在脚本出现错误时自动重启。stderr_logfilestdout_logfile选项用于指定错误和输出日志文件的路径。
  3. 更新Supervisor配置: 在终端中输入以下命令来更新Supervisor的配置:sudo supervisorctl reread sudo supervisorctl update
  4. 启动PHP守护进程: 在终端中输入以下命令来启动PHP守护进程:sudo supervisorctl start my_php_daemon
  5. 查看进程状态: 在终端中输入以下命令来查看PHP守护进程的状态:sudo supervisorctl status my_php_daemon

通过使用Supervisor,您可以确保PHP脚本作为守护进程运行,并可以轻松地监控、启动、停止和重新启动该脚本。此外,Supervisor还提供了一些高级功能,例如进程组管理、事件监听和自定义日志处理,可以帮助您更好地管理您的PHP守护进程。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

前言: 在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。...实时还原选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。...Docker官方相关详细文档:https://docs.docker.com/config/containers/live-restore/ 具体方法: 1.将配置添加到守护进程配置文件中。...Up 32 minutes 0.0.0.0:1521->1521/tcp, :::1521->1521/tcp oracle_11g 可以看到在我们重启完Docker后,上面在运行的两个容器的运行时间分别为...1小时、32分钟,容器并没有在我们重启Docker时停止,而是一直保持运行状态 。

4.1K20
  • php进程daemon化的正确实现方法

    前言 daemon 音标 : [‘di:mən] , 中文含义为守护神或精灵的意思 . 其实它还有个意思 : 守护进程 . Daemon程序是一直运行的服务端程序,又称为守护进程。...通常在系统后台运行,没有控制终端不与前台交互,Daemon程序一般作为系统服务使用。Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。...一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemon程序称作守护进程。...每个进程都有一个父进程,子进程退出,父进程能得到子进程退出的状态。 守护进程简单地说就是可以脱离终端而在后台运行的进程 ....php脚本以daemon形式运行在系统中 , 结束后自动推出 .

    88420

    PHP强化之22 - CGI、FastCGI与PHP-FPM

    PHP-CGI的不足: 1)php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。 2)直接杀死php-cgi进程,php就不能运行了。...(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程。) 四、FastCGI 从根本上来说,FastCGI是用来提高CGI程序性能的。...FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中,并因此获得较高的性能。...FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。...FastCGI子进程接着等待,并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

    73510

    Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(二)

    的最新版本已经到5.3.2,如果在php5.1.6的基础上安装phpmyadmin,则会提示php版本过低,这时候,EPEL中提供的较新php rpm就能很方便的派上用场了。...4.Supervisor配置守护进程 Supervisor是用Python开发的Linux/Unix系统下的一个进程管理工具。它可以使进程脱离终端,变为后台守护进程(daemon)。...其主要组成部分: supervisord:Supervisor的守护进程服务,用于接收进程管理命令; supervisorctl:Supervisor命令行工具,用于和守护进程通信,发送管理进程的指令;...这样,Supervisor会自动加载该目录下.conf后缀的文件作为共同服务配置。...其它Linux发行版开机启动脚本 User-contributed OS init scripts for Supervisor Supervisorctl管理进程 Supervisor服务启动后,受其管理的进程会在后台运行

    82120

    全面了解CGI、FastCGI、PHP-FPM

    一、抛个砖 1、Web Server传递数据的方法 正式说CGI之前,先来了解一下Web Server传递数据的另外一种方法:PHP Module加载方式。..._module,就是把php作为apache的一个子模块来运行。...FastCGI是和语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中,并因此获得较高的性能。...(CGI程序和FastCGI程序,可以理解成遵循CGI协议和FastCGI协议编写的程序) FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程...如果要搭建一个高性能的PHP WEB服务器,目前最佳的方式是Apache/Nginx + FastCGI + PHP-FPM(+PHP-CGI)方式了。

    2.8K12

    全面了解CGI、FastCGI、PHP-FPM

    一、抛个砖 1、Web Server传递数据的方法 正式说CGI之前,先来了解一下Web Server传递数据的另外一种方法:PHP Module加载方式。..._module,就是把php作为apache的一个子模块来运行。...被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程池) 所以,以上的apache调用php执行的过程如下: apache -> httpd -> php5_module -> sapi ...FastCGI是和语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中,并因此获得较高的性能。...(CGI程序和FastCGI程序,可以理解成遵循CGI协议和FastCGI协议编写的程序) FastCGI的工作原理: FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程

    84000

    Swoole-Task:简单高效的异步任务处理框架

    \Ctrl这个类 app\dao 数据访问层,操作数据库的方法 app\helper 公共方法类 app\vendor 如果依赖composer 第三方库,在在app目录下创建composer.json...swoole扩展的异步任务处理框架,更详细使用方法看源码,或者在github留issues,有好的建议我会根据情况及时改进 Swoole-Task服务管理脚本功能说明 ---- 1 如果swoole.php...-p9510 -d start #启动服务 非守护进程模式 php swoole.php -h127.0.0.1 -p9510 -D start #启动服务 指定进程名称(显示进程名为 swooleServ...help 显示帮助 -d, --daemon 指定此参数,服务以守护进程模式运行,不指定读取配置文件值 -D, --nondaemon 指定此参数,以非守护进程模式运行,不指定则读取配置文件值...(--TODO) status 查看指定ip和端口的服务状态,tasking_num是指当前正在运行的任务 list 查看当前服务器上运行的swoole-task实例, 返回结果显示服务进程的 USER

    1K40

    LAMP优化

    6、另外一项缓冲技术是把不常修改的 PHP 页面采用 HTML 缓冲输出。 7、不要在 Web 服务器上运行 X-Windows ,关掉没有必要运行的进程。...10、以上所有的方法都是针对单机而言的,如果你觉得系统还是不够快,可以采用集群,负载均衡,缓冲技术。采用 Squid 作为缓冲,配置 Squid 的方法。...提供这些 服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理 某些发生的事件。...linux系统有很多守护进程,大多数服务器都是用守护进程实现的。如Web服务 http等。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。...有些书籍和资料也把守护进程称作:“服务”。关闭服务方 法请查看笔者的文章:深入理解Linux守护进程。

    75820

    带着老李折腾山寨Workerman(四)

    记得后来没多久,领导让我研究一个爬虫脚本,当时为了不让脚本莫名其妙退出就天天看着电脑不关机,再后来就用Linux命令后加一个[ & ]符来跑...莫名其妙挂了几次后,我决定彻底研究一下[ 如何使程序在后台保持稳定...如果想让[ 后台 ]任务再次运行起来,需要用bg + [ 序号 ]来恢复后台任务运行,如上图中所示。 然而这种做法有可能出现的情况是:如果关闭当前终端,该进程也有可能会被关闭。...所以,无论是末尾加上&符号亦或是头部加上nohup,并非靠谱或最佳方案。我曾经见过不少nohup后几天后莫名其妙进程丢失的案例,比如这位... ? 所以我们需要一种正规而又稳定化的进程后台方法。...上面普及铺垫完了,就可以正式步入正轨了,是时候表演真正的技术了!在*NIX里,后台进程有个标准说法叫做daemon进程,标准翻译叫做守护进程。...包括我们正在山寨的对象Workerman在启动后都是以守护进程方式跑在系统后台,稳稳地提供服务,那么如何利用PHP实现daemon? <?

    82431

    Linux - 请允许我静静地后台运行

    而在 shell 脚本中,我们会发现运行 setsid 的进程会一直阻塞住,直到 command 进程执行结束。...守护进程 以上介绍的都是一些临时进程的处理,后台运行的进程的最终方法是将进程变成守护进程。...守护进程 守护进程(daemon)是生存期较长的一种进程,一般在系统启动时启动,系统关闭时停止,没有控制终端,也不会输出。如我们的服务器、fpm 等进程就是以守护进程的形式存在的。...创建过程 要创建一个守护进程,步骤为: 必选项 fork 子进程,退出父进程,子进程作为孤儿进程被 init 进程收养; 使用 setsid, 打开新会话,进程成为会话组长,正式脱离终端控制; 设置信号处理...; 代码 以下是 php 创建守护进程的伪代码,另外我的另一篇博客 初探PHP多进程 也稍微介绍了一些相关内容: $pid = pcntl_fork(); if ($pid > 0) { exit

    1.7K50

    LaravelLumen 使用 redis队列

    这里我们可以保持其默认配置不变。 failed配置项用于配置失败队列任务存放的数据库及数据表。这里我们需要按照自己的数据库配置对其做相应修改。...9、运行队列进程 Laravel 自带了一个队列进程用来处理被推送到队列的新任务。你可以使用 queue:work 命令运行这个队列进程。...请注意,队列进程开始运行后,会持续监听队列,直至你手动停止或关闭终端: php artisan queue:work 注:为了保持队列进程  queue:work 持续在后台运行,需要使用进程守护程序...五、配置 Supervisor 安装 Supervisor Supervisor 是 Linux 系统中常用的进程守护程序。如果队列进程 queue:work 意外关闭,它会自动重启启动队列进程。...(用于接收进程管理命令) supervisorctl 客户端(用于和守护进程通信,发送管理进程的指令) echo_supervisord_conf 生成初始配置文件程序。

    2.4K20

    【Docker】Supervisor 实现单容器运行多服务进程

    背景介绍 近期笔者在工作中遇到一个特殊的需求场景,即在单个容器中同时运行 php-fpm 和 nginx 服务,并通过 cron 服务管理计划任务。...作为主进程启动,并置于守护进程模式 Supervisord 根据配置文件中的设置,逐一启动子进程 Supervisord 通过操作系统信号机制,实时监控子进程的运行状态 Supervisord 在子进程状态异常时接收到控制信号...,按照配置文件中的设置对子进程进行重启等操作 Supervisor 使用 以背景介绍中的需求场景为例,使用已安装 fpm 的 php 官方镜像作为基础进行 Docker 镜像构建,安装 supervisor...nodaemon=true # Supervisor 默认处于守护进程模式,而在容器中则需要处于前台运行以保持容器活跃 [program:php-fpm...PID 文件路径,默认值为 $CWD/supervisord.pid # nodaemon:默认为 false,以守护进程模式运行;如果设置为 true,则以前台模式运行 --------------

    10800

    深入理解php的apc

    故这个设为03.通过ini选项apc.filters缓存更少的脚本apc优点:1.使用spinlocks(自旋)锁机制,能够达到最佳性能2.apc提供apc.php,用于监控和管理apc缓存。...由apc自行管理该共享内存4.调整apc.shm_size、apc.num_files_hints、apc.user_entires_hint的值到最佳5.php预定义常量,可以使用apc _define...不过apc开发者说pecl hidef性能更加,抛弃define,它是低效的6.apc_store,对于系统设置等PHP变量,生命周期是整个应用(从httpd守护进程到httpd守护进程关闭),使用apc...apc.file_update_protection = 2;sys; 当你在一个运行中的服务器上修改文件时,你应当执行原子操作。; 也就是先写进一个临时文件,然后将该文件重命名(mv)到最终的名字。...id=8754; 请保持为off,否则可能导致意想不到的结果。apc.max_file_size = 1m;sys; 禁止大于此尺寸的文件被缓存。

    89540

    Docker 基础

    Docker 客户端与守护进程可以运行在同一台机器上,你也可以通过客户端连接到远程的 Docker 守护进程。...按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。...有两种方法,两种方法的效果完全不同: 直接 exit,这时候 bash 程序终止,容器进入到停止状态 使用组合键退出,仍然保持容器运行,我们可以随时回来到这个 bash 中来,组合键是 Ctrl-p...作为一个最佳实践,在构建一个新镜像时,我们应该尽可能减少 RUN 命令的使用次数,这样可以减少镜像的大小 CMD 用于设置容器启动时默认执行的命令,显然,我们就是要启动 nginx 这样,这个简单的镜像构建脚本就完成了...这里: 当我们执行 docker build 的时候,docker 就会默认在当前目录中,查找一个叫做 Dockerfile 的文件名作为构建脚本。

    56250

    Docker入门(一)-- 基础概念与安装

    由于隔离的进程独立于宿主和其它隔离的进程,因此也称其为容器。...Docker和传统虚拟机 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,与其他容器共享主机内核,而且也没有进行硬件虚拟,不占用比其他可执行文件更多的内存,从而使其更轻便。...Docker客户端与Docker守护进程进行通话,该守护程序完成了构建,运行和分发Docker容器的繁重工作。...Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。 ?...容器存储层的生命周期和容器一样,随容器的消亡而消亡,因此任何保存在存储层的信息都会随容器的删除而丢失。 按照Docker最佳实践的要求,容器不应该向其存储层写入任何数据,容器存储层要保持无状态化。

    58830

    PHP 调用 Go 服务的正确方式 - Unix Domain Sockets

    服务抽取 这样,服务形式必须要改变,我们希望这个文本匹配这个服务能做到: 随调随走,不依赖,不再与“消息处理服务”耦合在一起; 一次初始化,进程运行期间持续提供服务; 同步响应,高效而准确,最好能不用各种锁来保持资源占有...; 解决办法也很简单,就是把这个文本匹配的服务抽取出来,单独作为一个守护进程来运行,像一个特殊的服务器,多个“消息处理服务”在有需要时能调用此服务进程。...当然介绍的方法,并不只适合 PHP 与 Go 通信,其他语言也可以,至少 C系语言中是通用的。...: 纯粹用 Go 进行文本关键词匹配,一千条数据运行一秒多,差不多是 PHP 效率的两倍。...然后是 PHP 使用 Unix Domain Socket 调用 Go 服务的耗时,可能是进程间复制数据耗时或 PHP 拖了后腿,3秒多一点,跟纯 PHP 脚本差不多。

    2.1K110
    领券