1. Go to this page and download the library: Download kynetcode/wpzylos-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/ */
kynetcode / wpzylos-queue example snippets
use WPZylos\Framework\Queue\QueueServiceProvider;
// In your plugin bootstrap
$app->register(new QueueServiceProvider());
use WPZylos\Framework\Queue\Job;
class SendWelcomeEmail extends Job
{
protected int $tries = 3;
protected int $retryAfter = 120; // 2 minutes
protected int $timeout = 30;
public function __construct(private int $userId) {}
public function handle(): void
{
$user = get_userdata($this->userId);
wp_mail($user->user_email, 'Welcome!', 'Thanks for joining.');
}
public function failed(\Throwable $exception): void
{
error_log("Failed to send welcome email to user {$this->userId}: {$exception->getMessage()}");
}
}
use WPZylos\Framework\Queue\Queue;
$queue = $app->make(Queue::class);
// Dispatch immediately
$queue->push(new SendWelcomeEmail(123));
// Dispatch with 1-hour delay
$queue->later(3600, new SendWelcomeEmail(456));
use WPZylos\Framework\Queue\Job;
class GenerateReport extends Job
{
protected int $tries = 5;
protected int $retryAfter = 300; // 5 minutes
protected int $timeout = 120; // 2 minutes max
protected string $queue = 'reports';
public function __construct(
private int $reportId,
private string $format
) {}
public function handle(): void
{
// Generate report...
$report = ReportBuilder::generate($this->reportId, $this->format);
// Save to uploads
file_put_contents(
wp_upload_dir()['basedir'] . "/reports/{$this->reportId}.{$this->format}",
$report
);
}
public function failed(\Throwable $exception): void
{
update_post_meta($this->reportId, '_report_status', 'failed');
}
}
$queue = $app->make(Queue::class);
// Push a job
$jobId = $queue->push(new GenerateReport(42, 'pdf'));
// Delayed dispatch (seconds)
$queue->later(1800, new GenerateReport(42, 'csv')); // 30 min delay
// Check queue size
$pending = $queue->size('default'); // Count pending jobs
$reports = $queue->size('reports'); // Count by queue name
// Clear a queue
$queue->clear('default');
$queue = $app->make(Queue::class);
// Get all failed jobs
$failures = $queue->failed();
foreach ($failures as $failure) {
echo "{$failure->queue}: {$failure->exception}\n";
}
// Retry a failed job (re-queues it)
$queue->retryFailed($failureId);
// Delete a specific failed job
$queue->deleteFailed($failureId);
// Clear all failed jobs
$queue->clearFailed();
use WPZylos\Framework\Queue\Worker;
$worker = $app->make(Worker::class);
// Process a single job
$worker->process('default');
// Process up to 25 jobs
$processed = $worker->run(25, 'default');
echo "Processed {$processed} jobs";
use WPZylos\Framework\Queue\QueueTableInstaller;
$installer = $app->make(QueueTableInstaller::class);
// Create tables (runs dbDelta)
$installer->install();
// Drop tables (on uninstall)
$installer->uninstall();
use WPZylos\Framework\Queue\QueueCronHandler;
$cron = $app->make(QueueCronHandler::class);
// Change batch size (default: 10)
$cron->setBatchSize(25);
// Manual registration (auto-done by ServiceProvider)
$cron->register();
// Cleanup on plugin deactivation
$cron->unregister();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.