Library yang bertugas menjalankan aksi-aksi aplikasi di background.
Jalankan perintah di bawah di folder aplikasi:
mim app install lib-worker
Module ini menambahkan satu library umum dengan nama LibWorker\Library\Worker
yang bisa digunakan untuk memenej jobs.
use LibWorker\Library\Worker;
$name = 'my-job';
$router = ['siteHome', ['param1'=>12], ['query1'=>12]];
$data = ['name'=>'lorem'];
$time = time() + 3600;
$queue = 'job-1';
Worker::add($name, $router, $data, $time, $queue);Semua aktifitas worker dijalankan melalui cli, untuk itu perlu menambahkan konten seperti di bawah pada cronjob anda:
* * * * * cd /path/to/app/dir/ && php index.php worker startAtau jika cli mim terpasang, bisa juga dengan perintah:
* * * * * cd /path/to/app/dir/ && mim app worker startMenambah beberapa worker sekaligus. Fungsi ini akan melewati data yang sudah
ada di databse. Masing-masing array item harus memiliki properti yang sama persis
dengan data pada method add:
$data = [
[
'name' => 'x',
'router' => ['x', []],
'data' => [],
'time' => [],
'queue' => 'x'
],
...
];Menambahkan satu worker dengan parameter sebagai berikut:
$nameNama worker.$routerParameter untuk membuat router yang akan dipanggil.$dataData yang akan dikirim ke router.$timeWaktu job akan dijalankan.$queueNama antrian
Sebagai catatan, jika job dengan nama yang sama sudah pernah ada, fungsi ini
akan mengembalikan nilai false.
Tidak ada job yang dijalankan secara bersamaan dengan nilai queue yang sama
kecuali nilai tersebut adalah null.
Mengambil informasi details suatu job. Fungsi ini akan mengembalikan objek dengan bentuk seperti berikut:
stdClass Object
(
[id] => 5
[name] => my-job
[queue] => my-queue
[router] => Array
(
[0] => siteHome
[1] => stdClass Object
(
[param1] => 12
)
[2] => stdClass Object
(
[query1] => 12
)
)
[data] => stdClass Object
(
[name] => lorem
)
[time] => 2019-02-19 13:58:18
[created] => 2019-02-19 05:58:18
)
Fungsi untuk mengecek jika suatu job sudah terdaftar.
Menghapus job yang sudah terdaftar.
Di bawah ini adalah konfigurasi umum worker.
return [
// ...
'libWorker' => [
'concurency' => 10,
'pidFile' => 'etc',
'phpBinary' => 'php',
'keepResponse' => true
]
// ...
];concurencyTotal worker yang akan dijalankan untuk mengerjakan job.pidFileFolder penyimpanan pid file.phpBinaryPath ke php-cli jika php tidak tersedia di PATH OS.keepResponseMenyimpan semua execution log pada tableworker_result.
Jika melakukan perubahan pada aplikasi setelah worker berjalan, maka pastikan untuk merestart worker agar konfig tersebut digunakan.
Masing-masing router yang akan digunakan untuk menangani worker, harus mengembalikan data dengan bentuk JSON dalam bentuk seperti di bawah:
{
"error": false,
"delay": 60
}Worker akan dipending dan dijalankan ulang jika router pekerja:
- Mengembalikan empty string
- Mengembalikan data yang tidak bisa di
json_decode. - Nilai
erroradalahtrue.
Jika nilai yang dikembalikan oleh pekerja adalah error: true, maka job tersebut
akan dijalankan lagi 1 menit kemudian. Pekerja bisa menentukan delay job akan
dijalankan lagi dengan mengeset properti delay dalam satuan detik.