Home  >  Article  >  Backend Development  >  php-resque: Redis-based background task system

php-resque: Redis-based background task system

步履不停
步履不停Original
2019-06-24 17:06:133106browse

php-resque: Redis-based background task system

Why use php-resque?

php-resque is a lightweight background task system based on Redis, with simple functional design and flexible configuration. Compared with the MQ system, which is large and comprehensive, this one looks small and beautiful.

php-resque Role division

  • Job defines tasks and is responsible for specific business logic.
  • Queue queue, responsible for Job deposit/retrieval
  • Worker retrieves Job from Queue for execution. Generally, it runs in background daemon mode in PHP CLI mode.

Use

##install

    If the download is slow, you can configure the composer domestic image
composer config -g repo.packagist composer https://packagist.phpcomposer.com
    Install php-resque
Old version

Composer: This package is abandoned and no longer maintained. The author suggests using the resque/php-resque package instead.

composer require  "chrisboulton/php-resque 1.2"
Updated to the new extension package:

resque/php-resque

composer require resque/php-resque

Write Job

DemoJob.php

<?php
class DemoJob
{
    public function perform()
    {
        // Work work work
        //echo $this->args['name'];
    }
}

Enqueue operation

<?php

Resque::setBackend(&#39;localhost:6379&#39;);
$args = array(
      &#39;name&#39; => 'hanmeimei',
    );
Resque::enqueue('default', DemoJob::class, $args);

Worker code

resque-worker.php

<?php
$redis_dsn = '127.0.0.1:6379';
putenv("REDIS_BACKEND=$redis_dsn");
// 引入队列的入口程序
$resque = realpath(dirname(__FILE__) . '/vendor/chrisboulton/php-resque/resque.php');
require_once $resque;

The environment variables for starting worker

php-resque are:

  • QUEUE – This is necessary and will determine the worker What tasks are to be performed, the most important ones come first, such as QUEUE=notify,mail,log. It can also be set to QUEUE=* to execute all tasks.

  • APP_INCLUDE – Optional, used to load files. You can set it to APP_INCLUDE=require.php and introduce all Job Classes in require.php.

  • #COUNT – Set the number of workers, the default is 1 COUNT=5.

  • REDIS_BACKEND – Set the ip and port of Redis. If not set, the default is to connect to localhost:6379.

  • LOGGING, VERBOSE – Set log, VERBOSE=1.

  • VVERBOSE - A more detailed log, which can be opened and viewed when VVERBOSE=1 debug.

  • INTERVAL – The interval at which the worker checks the queue. The default is five seconds INTERVAL=5.

  • PIDFILE - If you are a billing worker, you can specify PIDFILE to write the pid, for example, PIDFILE=/var/run/resque.pid.

  • BACKGROUND You can throw resque to the background for execution. Or just use php resque.php &.

Example

QUEUE=counter php resque-worker.php
At this point, the installation and use of php-resque has been completed.

The following chapters are tool plug-ins, for reference only.


Interface

resque-web

Monitoring the operating status of PHP-Resque

Install

gem install resque-web -v 0.0.8
Run

resque-web -p 40000

Monitor

supervisor

Start service

/usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
Monitoring project configuration

/etc/supervisor/conf.d/lumen_resque.conf

[program:worker_lumen_resque]
directory=/home/wwwroot/mysite
command=php resque-worker.php
environment=QUEUE='default'
Advantages:

    You can configure the program to automatically restart after exiting abnormally
  • Specify the program running user
  • You can set the number of processes
  • Automatic restart
  • After supervisord starts, automatically start the script
  • Group management
For more PHP related technical articles, please visit the

PHP Tutorial column to learn!

The above is the detailed content of php-resque: Redis-based background task system. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn