2017 © Pedro Peláez
 

silverstripe-module silverstripe-resque

Wraps around the resque code for background jobs

image

stojg/silverstripe-resque

Wraps around the resque code for background jobs

  • Monday, March 27, 2017
  • by stojg
  • Repository
  • 3 Watchers
  • 6 Stars
  • 14,054 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 2 Forks
  • 3 Open issues
  • 11 Versions
  • 5 % Grown

The README.md

SilverStripe Resque

This modules wraps php-resque to be able to make scheduled background jobs in sweet harmony with redis., (*1)

Requirements

  • SilverStripe with requirements
  • Redis server
  • (optional) a worker monitor, eg god or monit, to start and monitor the worker(s).
  • This module requires that the PHP pcntl module is installed

Still in development, (*2)

The principle is that a 'front-end' adds a job via Resque class, this is a very fast operation., (*3)

$args = array(
    'message' => 'from '.$_SERVER['HTTP_HOST'],
    'time' => date('Y-m-d H:i:s')
);
$token = Resque::enqueue("dev:ping", "SSResquePingJob", $args);

This will be sent over tcp to a redis server that will hold this information until a worker fetches it., (*4)

By starting one or many worker via the cli, they will pull jobs from a 'queue' on redis, ie: dev:ping. Then it will find a PHP class to run the job, SSResquePingJob populate it with the $args and then run SSResquePingJob->perform()., (*5)

public function perform() {
    echo 'Ping: '.$this->args['time'].' '.$this->args['message'].PHP_EOL;
}

Any exception or errors will mark the job as failed, and it's possible to requeue it., (*6)

Installation

Install redis

Via homebrew:, (*7)

$ brew install redis

Or by compiling it, see Redis Quick Start for more information., (*8)

$ sudo mkdir -p /usr/local/src
$ cd /usr/local/src
$ sudo wget http://download.redis.io/redis-stable.tar.gz
$ sudo tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ sudo make
$ sudo make install

There are most likely a suitable packages in your prefered linux distribution (untested)., (*9)

Search google, (*10)

Silverstripe Resque

$ git clone git@github.com:stojg/silverstripe-resque.git resque
$ cd resque
$ composer update

Usage

Start the redis server:, (*11)

$ redis-server

Start the one worker for all queues in another terminal window, (*12)

$ ./framework/sake dev/resque/run queue=*

In another terminal window, try creating a ping job, (*13)

$ ./framework/sake dev/resque/ping

In the worker terminal you should now see something similar to, (*14)

Ping: 2012-11-15 10:51:29 from hostname

Web interface

sudo gem install resque --no-ri -no-rdoc

Process monitor

How to install god on ubuntu / debian: How to monitor Resque with God and do it all with Capistrano on Ubuntu, (*15)

Example configuration:, (*16)

num_workers = 2, (*17)

num_workers.times do |num| God.watch do |w| w.dir = "/var/www/site" w.name = "site-worker-#{num}" w.group = 'site-worker' w.interval = 30.seconds w.uid = 'www-data' w.gid = 'www-data' w.start = "/usr/bin/php ./framework/cli-script.php dev/resque/run queue=ping", (*18)

  # restart if memory gets too high
  w.transition(:up, :restart) do |on|
    on.condition(:memory_usage) do |c|
      c.above = 64.megabytes
      c.times = 2
    end
  end

  # determine the state on startup
  w.transition(:init, { true => :up, false => :start }) do |on|
    on.condition(:process_running) do |c|
      c.running = true
    end
  end

  # determine when process has finished starting
  w.transition([:start, :restart], :up) do |on|
    on.condition(:process_running) do |c|
      c.running = true
      c.interval = 5.seconds
    end

    # failsafe
    on.condition(:tries) do |c|
      c.times = 5
      c.transition = :start
      c.interval = 5.seconds
    end
  end

  # start if process is not running
  w.transition(:up, :start) do |on|
    on.condition(:process_running) do |c|
      c.running = false
    end
  end
end

end, (*19)

Credits

Here are the giants which shoulders I'm standing standing on:, (*20)

  • Chris Boulton for PHP resque
  • defunkt the original resque for ruby
  • redis for providing an awesome, stable and fast key value store
  • SilverStripe The place where I get paid to do stuff like this.

The Versions

27/03 2017

dev-master

9999999-dev http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

29/09 2016

1.2.5

1.2.5.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

31/07 2016

1.2.0

1.2.0.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

31/07 2016

1.2.4

1.2.4.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

30/10 2013

1.1.3

1.1.3.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

24/10 2013

1.2.3

1.2.3.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

23/10 2013

1.1.2

1.1.2.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

21/10 2013

1.1.1

1.1.1.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

21/10 2013

dev-dependency-upgrade

dev-dependency-upgrade http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

21/10 2013

1.1.0

1.1.0.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobs

  Sources   Download

BSD

The Requires

 

redis silverstripe

20/03 2013

1.0.0

1.0.0.0 http://github.com/stojg/silverstripe-resque

Wraps around the resque code for background jobss

  Sources   Download

BSD

The Requires

 

redis silverstripe