1. Go to this page and download the library: Download popphp/pop-queue library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
popphp / pop-queue example snippets
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
use Pop\Queue\Process\Job;
// Create a job and add it to a queue
$job = Job::create(function() {
echo 'This is job' . PHP_EOL;
});
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$queue->addJob($job);
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
// Call up the queue and pass it to a worker object
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$worker = Worker::create($queue);
// Trigger the worker to work the next job across its queues
$worker->workAll();
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
use Pop\Queue\Process\Task;
$task = Task::create(function() {
echo 'This is a scheduled task' . PHP_EOL;
})->every30Minutes();
// Add to a queue
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$queue->addTask($task);
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
// Call up the queue and pass it to a worker object
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$worker = Worker::create($queue);
// Trigger the worker to run the next scheduled task across its queues
$worker->runAll();
var_dump($job->hasStarted()); // Has a started timestamp
var_dump($job->hasNotRun()); // No started timestamp and no completed timestamp
var_dump($job->isRunning()); // Has a started timestamp, but not a completed/failed
var_dump($job->isComplete()); // Has a completed timestamp
var_dump($job->hasFailed()); // Has a failed timestamp
var_dump($job->getStarted());
var_dump($job->getCompleted());
var_dump($job->getFailed());
use Pop\Queue\Process\Job;
// Create a job from a closure
$job1 = Job::create(function() {
echo 'This is job #1' . PHP_EOL;
});
// Create a job from a static class method
$job2 = Job::create('MyApp\Service\SomeService::doSomething');
// Create a job with parameters
$closure = function($num) {
echo 'This is job ' . $num . PHP_EOL;
};
// The second argument passed is the callable's parameter(s)
$job3 = Job::create($closure, 1);
use Pop\Queue\Queue;
use Pop\Queue\Worker;
use Pop\Queue\Adapter\File;
use Pop\Queue\Process\Job;
// Create a job that needs the application object
$job = Job::create(function($application) {
// Do something with the application
});
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$queue->addJob($job);
use Pop\Queue\Queue;
use Pop\Queue\Worker;
use Pop\Queue\Adapter\File;
use Pop\Application;
$application = new Application();
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$worker = Worker::create($queue, $application);
// When the worker works the job, it will push the application object to the job
$worker->workAll();
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
use Pop\Queue\Process\Job;
// Create a job from an application command and add to the queue
$job = Job::command('hello world');
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$queue->addJob($job);
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$worker = Worker::create($queue, $application);
use Pop\Queue\Process\Job;
// Create a job from an executable CLI command
$job = Job::exec('ls -la');
use Pop\Queue\Process\Job;
$job = Job::create(function() {
echo 'This is job #1' . PHP_EOL;
});
$job->setMaxAttempts(10);
$job->setMaxAttempts(0);
var_dump($job->hasExceededMaxAttempts());
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
use Pop\Queue\Process\Task;
// Create a scheduled task and add to the queue
$task = Task::create(function() {
echo 'This is job #1' . PHP_EOL;
})->every5Minutes();
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'));
$queue->addTask($task);
use Pop\Queue\Process\Task;
$task = Task::create(function() {
echo 'This is job #1' . PHP_EOL;
});
// Submit a cron-formatted schedule string
$task->schedule('* */2 1,15 1-4 *')
// Submit a non-standard cron-formatted schedule string
// that
use Pop\Queue\Process\Task;
$task = Task::create(function() {
echo 'This is job #1' . PHP_EOL;
});
// Using a valid date/time string
$task->every30Minutes()->runUntil('2023-11-30 23:59:59');
// Using a valid UNIX timestamp
$task->every30Minutes()->runUntil(1701410399);
use Pop\Queue\Process\Task;
$task = Task::create(function() {
echo 'This is job #1' . PHP_EOL;
});
$task->every30Minutes()
$task->setBuffer(10);
use Pop\Queue\Process\Task;
$task = Task::create(function() {
echo 'This is job #1' . PHP_EOL;
});
$task->every30Minutes()
$task->setBuffer(-1);
use Pop\Queue\Adapter\Redis;
$adapter = new Redis();
$adapter = new Redis('my.redis.server.com', 6380, 'my-queue');
use Pop\Queue\Adapter\Database;
use Pop\Db\Db;
$db = Db::mysqlConnect([
'database' => 'DATABASE',
'username' => 'DB_USER',
'password' => 'DB_PASS'
]);
$adapter = new Database($db);
$adapter = new Database($db, 'my_queue_jobs');
use Pop\Queue\Adapter\File;
$adapter = new File(__DIR__ . '/queues');
use Pop\Queue\Adapter\Sqs;
use Aws\Sqs\SqsClient;
$client = new SqsClient([
'key' => 'AWS_KEY',
'secret' => 'AWS_SECRET',
],
'region' => 'AWS_REGION',
'version' => 'AWS_VERSION'
]);
$adapter = new Sqs($client, 'YOUR_AWS_QUEUE_URL');
use Pop\Queue\Queue;
$queue = Queue::create('pop-queue', $adapter);
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
use Pop\Queue\Process\Job;
use Pop\Queue\Process\Task;
$job1 = Job::create(function() {
echo 'This is job #1' . PHP_EOL;
});
$job2 = Job::create(function() {
echo 'This is job #2' . PHP_EOL;
});
$task1 = Task::create(function() {
echo 'This is scheduled task #1' . PHP_EOL;
})->every30Minutes();
$task2 = Task::create(function() {
echo 'This is scheduled task #2' . PHP_EOL;
})->sundays();
$queue = new Queue('pop-queue', new File(__DIR__ . '/queue'), Queue::FILO);
$queue->addJobs([$job1, $job2])
->addTasks([$task1, $task2]);
use Pop\Queue\Queue;
use Pop\Queue\Adapter\File;
// Call up the queue and pass it to a worker object
$queue1 = new Queue('pop-queue1', new File(__DIR__ . '/queue1'));
$queue2 = new Queue('pop-queue2', new File(__DIR__ . '/queue2'));
$worker = Worker::create([$queue1, $queue2]);
$worker->work('pop-queue1');
$worker->workAll();
$worker->run('pop-queue1');
$worker->runAll();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.