有时,php守护进程会自己停掉。
保险起见,安装supervisord
当前系统:centos 6
yum install supervisor
启动命令:
service supervisord start
但是先不要启动。
先写一个php
<?php
while(1) {
echo 1;echo "\n";
sleep(1);
}
假设该php文件是/var/www/html/public/temp/1.php
假设linux的php的cli命令文件是 /usr/local/php/bin/php
确保/etc/supervisord.conf文件最后
[include]
files = /etc/supervisord.d/*.ini
然后
vim /etc/supervisord.d/1.ini
(如果要监控不同的进程,多写几个ini即可,无需用组的方式,最简单)
[program:a1]
command = /usr/local/php/bin/php /var/www/html/public/temp/1.php
directory = /var/www/html/public/temp
user = root
stdout_logfile = /tmp/11.log
redirect_stderr = true
autostart = true
autorestart = true
解释看最下方的参考链接。
然后,
启动 supervisord,注意根据配置,会自动启动1.php
service supervisord start
然后,现在查看/tmp/11.log
会发现里面的内容不停增加,是php在输出。
以下是一些可以在shell中使用的监控命令
supervisorctl status 查看所有进程状况,最经常使用
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
现在测试supervisor的自动重启功能。
ps aux|grep 1.php
然后
kill -9 进程号
继续ps aux|grep 1.php
发现又有了!
并通过不停增长的/tmp/11.log得到证实!
现在我想停止1.php了,方法
supervisorctl stop a1
现在我想启动1.php了,方法
supervisorctl start a1
真是太方便了!!
现在我要把phpresque的守护进程用其监控
(QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 php /var/www/worker3.php >> /tmp/1.log 2>&1 &)
添加/etc/supervisord.d/2.ini
[program:a2]
command = QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 /usr/local/php/bin/php /var/www/worker3.php
directory = /var/www
user = root
stdout_logfile = /tmp/a2.log
redirect_stderr = true
autostart = true
autorestart = true
然后
supervisorctl reload
======================
上面有误,补充,先在其余目录
建立shell脚本,例如名为w1.sh
#!/bin/bash
QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 /usr/local/php/bin/php /var/www/worker3.php
然后
chmod a+x w1.sh
然后
在上面的/etc/supervisord.d/2.ini文件里的
command = /path/w1.sh
原因:command后面的命令不认识环境变量设置参数,通过绕个弯子执行脚本即可。
我亲测成功。
=====================
使用
参考:
http://www.jb51.net/LINUXjishu/400050.html
分享到:
相关推荐
yii-resque, 基于 php Resque的Yii组件,基于 Resque我是 php的一个组件,它基于 php-resque resque和 php-resque-scheduler的组件,我们还通过使用 ResqueBoard测试了日志处理程序 using 。需求php函数扩展。Red
它借鉴了Ruby的Resque库的设计理念,通过队列系统确保任务的顺序执行和错误处理。 ### 1. 节点重构与`node-resque` "节点重构"通常指的是对Node.js应用程序进行的结构优化和代码重写,以提高其性能、可维护性和可...
php-resque是php环境中一个轻量级的队列服务。具体队列服务是做什么用的,请自行百度! ## 运行环境 ## * PHP 5.2+ * Redis 2.2+ ## 集成方法 ## ### 将源码放到ThinkPHP的Vendor目录中 ### 将源码更新到 ...
在本文中,我们将深入探讨Laravel开发中的一个重要组件——laravel-resque-ex,这是一个用于处理...通过合理地使用队列和laravel-resque-ex,你可以优化应用性能,提高用户体验,并且更好地应对高并发场景下的挑战。
通过合理地使用队列,我们可以避免因为长时间的计算导致用户界面卡顿,从而提升用户体验。同时,Resque的多进程和多线程特性使得它能够高效地并行处理任务,进一步提高应用性能。 总结来说,laravel-resque是...
- **Resque 监控**:可以使用 Resque 的监控工具(如 `resque-web`),监控队列状态、任务执行情况和错误日志。 - **Laravel 日志**:Laravel 默认集成了 Monolog,可以记录 worker 执行任务时的错误信息,便于...
【PHP使用php-resque库配合Redis实现MQ消息队列的教程】 消息队列在Web开发中扮演着重要的角色,尤其在处理耗时的后台任务时,如发送邮件、数据分析等。这种延迟操作如果直接在前端处理,会影响用户体验。因此,...
`php-resque` 正是这样的工具,它使用 Redis 作为持久化存储,管理待处理任务的队列,确保即使在服务器重启或故障情况下,任务也不会丢失。 ### 2. 安装与配置 安装 `php-resque` 通常通过 Composer 进行,首先在...
`illuminate-resque`则将Resque的功能与Laravel的优雅和易用性相结合,为开发者提供了强大的队列处理能力。 一、Laravel队列介绍 Laravel队列允许开发者将耗时的任务推迟到以后执行,如发送电子邮件、处理大量数据...
php-resque php-resque(发音为“ rescue”)是Redis支持的库,用于创建后台作业,将这些作业放在多个队列中并在以后进行处理。内容日志记录事件/挂钩系统配置选项Redis 贡献者 背景这个版本的 php-resque 基于最初...
目前,php-resque-scheduler仅支持延迟的作业,这是将作业推送到队列并使其在某个时间戳记或几秒钟内运行的功能。 计划在将来的版本中为周期性作业提供支持(类似于CRON)。 由于PHP端口几乎是Ruby版本的直接API...
PHP Resque Worker(和入队) PHP Resque是Redis支持的库,用于创建后台作业,将这些作业放在一个或多个队列中,并在以后进行处理。 背景Resque由GitHub开创,并用Ruby编写。 您在这里看到的东西几乎是作为Resque ...
php-resque-statsd还包括对使用作业的跟踪指标的支持。 跟踪计划作业的适当的侦听器将自动注册,因此不需要您做任何额外的工作。 使用php-resque-statsd php-resque-statsd作为单个类( lib/ResqueStatsD.php )...
Capistrano集成,用于resque-pool 。 安装 将此行添加到您的应用程序的Gemfile中: gem 'capistrano-resque-pool' 然后执行: $ bundle install 或将其自己安装为: $ gem install capistrano-resque-pool ...
Resque是Redis支持的库,用于创建后台作业,将这些作业放在多个队列中并在以后进行处理。 背景 Resque是由GitHub上的优秀人才开发的,是由Ruby编写的(是的,我是一个接吻的人)。 您在这里看到的是Resque worker和...
Php-Resque 是 Resque 的PHP语言实现版。 使用示例: 1、定义一个任务队列:// Required if redis is located elsewhere Resque::setBackend('localhost:6379'); $args = array( 'name' => 'Chris' ...
我们还实现了一些流行的 Resque 插件,包括和 此包的完整 API 文档通过分支从main自动生成并发布到Resque 工厂(如何运作)概述Resque 是一个基于队列的任务处理系统,可以被认为是“看板”风格的工厂。 这家工厂的...