Manage background tasks with PHP-Resque and Supervisor

Thu 03 July 2014


PHP-Resque, the PHP equivalent to Ruby's really nice background process runner is a great way to execute long running PHP processes. Supervisor is a python-based process control system, essentially it's a convenient way to manage custom system processes you need to handle. Combining the two to manage long running PHP jobs makes a lot of sense but it takes a little bit of work to get them talking.

Once you've gotten PHP-Resqueinstalled on your project, you've added items to your queue and written the workers to handle the background tasks. You'll need to plug PHP-Resque into supervisor. Here's a sample config file I used to manage php resque queues within Yii projects but it should work with anything that's using php-resque.

command=php vendor/chrisboulton/php-resque/bin/resque
process_name = %(program_name)s-%(process_num)s

A few things to note.

  1. Firstly the APP_INCLUDE should include the set of classes you intent to use to handle the worker jobs. Meaning something that has a perform action that does something, as described here.
  2. You'll notice the COUNT=1 argument being set in the resque environment. This is essential, if you fork more than one job using php-resque it'll background both and supervisor will not be able to manage that process(and will continually try to spawn more processes till it gives up). If you wish to have multiple workers, use the numprocs argument.

And that's it really.

Happy forking!

Category: PHP Tagged: php system yii


Yii issues with Homebrew PHP 5.3

Fri 04 April 2014

When running yii with a homebrewed install of PHP 5.3, PHP code embedded in HTML wouldn't work. This is because for some inexplicable reason Homebrew's PHP install disables short-tag support. Simply edit /usr/local/etc/php/5.3/php.ini and change short-tags to On.

short_open_tag = On

Also ensure …

Category: Yii Tagged: osx php yii


Read More
Page 1 of 1