1. Go to this page and download the library: Download krak/job 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/ */
krak / job example snippets
$kernel = new Krak\Job\Kernel();
// configure the scheduling loop
$kernel->config([
'queue' => 'jobs', // name of the queue
'sleep' => 10, // duration in seconds the scheduler will sleep for after every iteration
'ttl' => 50, // max duration of the scheduler before dying
'max_jobs' => 10, // max number of processes to launch at once
'max_retry' => 3, // max number of retries before just giving up on a failed job
'batch_size' => 5, // max number of jobs to process in a given batch
]);
// configure the queue provider
$kernel['Predis\ClientInterface'] = function() {
return new Predis\Client();
};
$kernel['krak.job.queue_provider'] = 'redis';
// configure the consumer stack
$kernel->wrap('krak.job.pipeline.consumer', function($consumer) {
return $consumer->push(myConsumer());
});
// and so on...
namespace Acme\Jobs;
use Krak\Job\Job;
use Acme\ServiceA;
class ProcessJob implements Job
{
private $id;
public function __construct($id) {
$this->id = $id;
}
public function handle(ServiceA $service) {
process($this->id);
}
}
use Krak\Job;
class ProcessJob implements Job\Job, Job\PipeWrappedJob
{
public function handle() {}
public function pipe(Job\WrappedJob $wrapped) {
return $wrapped->withName('my_custom_job_name')
->withQueue('my_custom_queue')
->withDelay(3600)
->withAddedPayload([
'custom_data' => 1,
]);
}
}
use Krak\Job;
// use the kernel to create a dispatch instance
$dispatch = $kernel['dispatch']; // or $kernel[Job\Dispatch::class];
$dispatch->wrap(new Acme\Jobs\ProcessJob(1))
->onQueue('process') // this is optional
->withName('process')
->delay(3600) // will delay the sending of this job for 1 hour (not all queues support delay)
->dispatch();
// in bin/console
$app = new Symfony\Component\Console\Application();
Krak\Job\registerConsole($app, $kernel);
$kernel['Psr\SimpleCache\CacheInterface'] = function($c) {
// return any CacheInterface
return new Symfony\Component\Cache\Simple\RedisCache($c['Predis\ClientInterface']);
};
// in your migration class
public function up(Schema $schema) {
$migration = new Krak\Job\Queue\Doctrine\JobMigration('krak_jobs');
$migration->up($schema);
}
public function down(Schema $schema) {
$migration = new Krak\Job\Queue\Doctrine\JobMigration('krak_jobs');
$migration->down($schema);
}
$conn = $kernel['Doctrine\DBAL\Connection'];
$migration = $kernel['Krak\Job\Queue\Doctrine\JobMigration'];
// up
$migration->migrateUp($conn);
// or down
// $migration->migrateDown($conn);