Download the PHP package seatgeek/djjob without Composer
On this page you can find all versions of the php package seatgeek/djjob. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download seatgeek/djjob
More information about seatgeek/djjob
Files in seatgeek/djjob
Package djjob
Short Description Allows PHP web applications to process long-running tasks asynchronously
License
Informations about the package djjob
DJJob
DJJob allows PHP web applications to process long-running tasks asynchronously. It is a PHP port of delayed_job (developed at Shopify), which has been used in production at SeatGeek since April 2010.
Like delayed_job, DJJob uses a jobs
table for persisting and tracking pending, in-progress, and failed jobs.
Requirements
- PHP5
- PDO (Ships with PHP >= 5.1)
- (Optional) PCNTL library
Setup
Import the sql database table.
The jobs
table structure looks like:
You may need to use BLOB as the column type for
handler
if you are passing in serialized blobs of data instead of record ids. For more information, see this link This may be the case for errors such as the following:unserialize(): Error at offset 2010 of 2425 bytes
Tell DJJob how to connect to your database:
Usage
Jobs are PHP objects that respond to a method perform
. Jobs are serialized and stored in the database.
Unlike delayed_job, DJJob does not have the concept of task priority (not yet at least). Instead, it supports multiple queues. By default, jobs are placed on the "default" queue. You can specifiy an alternative queue like:
At SeatGeek, we run an email-specific queue. Emails have a sendLater
method which places a job on the email
queue. Here's a simplified version of our base Email
class:
Because Email
has a perform
method, all instances of the email class are also jobs.
Running the jobs
Running a worker is as simple as:
Initializing your environment, connecting to the database, etc. is up to you. We use symfony's task system to run workers, here's an example of our jobs:worker task:
The worker will exit if the database has any connectivity problems. We use god to manage our workers, including restarting them when they exit for any reason.
Changes
- Eliminated Propel dependency by switching to PDO