Lewati ke konten

Queuety

Mesin alur kerja WordPress.

Terminal
wp plugin install https://github.com/inline0/queuety/releases/latest/download/queuety.zip --activate

Rilis terbaru v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

Dalam praktik

Alur kerja yang ditentukan di PHP dan perintah worker yang menjalankannya.

Alur kerja persetujuan

Alur kerja menjalankan satu langkah, menunggu 24 hours, lalu berhenti di wait_for_approval() hingga proses lain mengirim sinyal approval.

Jeda disimpan di database, sehingga tetap ada setelah worker dimulai ulang dan penerapan versi baru; sinyal yang dikirim lebih awal dicatat dan diproses saat alur kerja mencapai waktu tunggu. Membatalkan proses akan memanggil handler on_cancel().

PHP
$workflow_id = Queuety::workflow( 'approval_flow' )
    ->then( SubmitRequestHandler::class )
    ->delay( hours: 24 )
    ->wait_for_approval()
    ->then( ProcessApprovalHandler::class )
    ->on_cancel( CleanupHandler::class )
    ->dispatch( [ 'request_id' => 99 ] );

// Later, from another process:
Queuety::signal( $workflow_id, 'approval', [ 'approved_by' => 'admin@example.com' ] );

Klaim MySQL langsung

Setiap worker berjalan dalam proses WP-CLI jangka panjang dan mengambil job langsung dari MySQL dengan FOR UPDATE SKIP LOCKED.

Alur Kerja Tahan Lama

Proses multi-langkah dengan status persisten yang tetap bertahan saat terjadi timeout PHP, crash, dan percobaan ulang.

Mesin Status

Status berbasis peristiwa yang bertahan lama dengan Queuety::machine(): tentukan status dan transisi, kirim peristiwa, baca linimasa.

Sinyal dan Persetujuan

wait_for_signal(), wait_for_approval(), dan wait_for_input() menjeda alur kerja hingga input eksternal diterima.

Tingkat Prioritas

Empat tingkat, dari Rendah hingga Mendesak. Dalam satu antrean, job dengan prioritas lebih tinggi diambil lebih dahulu.

Pembatasan Laju

Batas per handler dalam jendela bergulir. Worker yang mengambil job dengan batas laju akan mengembalikannya ke antrean lalu menunggu.

Job Berulang

Penjadwalan berbasis interval dan cron. Parser cron bawaan tanpa dependensi eksternal.

Langkah Paralel

Jalankan langkah alur kerja secara bersamaan dan tunggu hingga semuanya selesai sebelum melanjutkan.

Metrik & Pencatatan

Log database permanen dengan throughput, durasi rata-rata dan p95, serta tingkat kesalahan per handler.

Fallback WP-Cron

Tanpa akses shell, peristiwa WordPress cron yang berjalan sekali per menit menjalankan worker satu kali untuk antrean default.

Middleware

Middleware job bergaya onion untuk batas laju, pembatasan pengecualian, keunikan, timeout, dan perlindungan dari tumpang tindih.

PHP 8.2+

Enum, kelas readonly, ekspresi match, promosi konstruktor, dan atribut PHP.

Mengapa Queuety

Status tersimpan di MySQL

Baris antrean, status alur kerja, log, sinyal, dan potongan streaming disimpan di MySQL, sehingga restart worker tidak menghilangkan status orkestrasi. Di setiap batas langkah, pembaruan status, penyelesaian job, dan penambahan job berikutnya dilakukan dalam satu transaksi.

Di luar permintaan halaman

WP-Cron hanya berjalan saat halaman dikunjungi, dan panggilan LLM selama 60 detik dihentikan oleh timeout PHP 30 detik. Worker Queuety berjalan dalam proses WP-CLI jangka panjang dan mengambil pekerjaan tanpa menunggu lalu lintas.

Pengaman untuk proses agen

for_each() dengan mode kuorum, gerbang persetujuan, dan batas seperti max_transitions() dan max_state_bytes() menjaga agar proses agen yang berjalan lama tetap dalam batas yang ditentukan.

Dapat digunakan di luar WordPress

Inti berbasis database berjalan dalam proses PHP apa pun yang dapat membuka database yang sama, sehingga aplikasi lain dapat menjalankan job, mengirim sinyal, dan membaca status alur kerja. Pemicu tindakan, bridge WP-Cron, dan perintah WP-CLI tetap memerlukan WordPress.

Dibandingkan dengan

Bagaimana Queuety berhubungan dengan penjadwal dan mesin alur kerja yang sudah dikenal para pengembang WordPress.

Queuety dibandingkan dengan alat lainnya
WP-Cron KeunggulanTerintegrasi di WordPress, fitur ini tidak memerlukan akses ke penjadwal sistem di hosting bersama, dan tugas yang terlewat waktunya akan berjalan saat pemuatan halaman berikutnya, alih-alih dihilangkan. Perbedaan dengan QueuetyWorker Queuety berjalan secara independen dari lalu lintas situs dan memerlukan proses wp queuety work yang berjalan lama. Bridge WP-Cron mengubah peristiwa berulang menjadi jadwal, tetapi belum menjalankan callback hook-nya, sehingga WP-Cron tetap bertanggung jawab menanganinya.
Action Scheduler KeunggulanDirancang untuk didistribusikan di dalam plugin dan tema tanpa memerlukan akses server; fitur ini memproses jutaan pembayaran untuk Subscriptions dan webhook untuk WooCommerce setiap bulan, serta mencatat setiap tindakan di antarmuka admin. Perbedaan dengan QueuetyAction Scheduler menjalankan hook di waktu berikutnya, seperti do_action() tertunda. Queuety menambahkan alur kerja multi-langkah dengan status yang bertahan di antara langkah, waktu tunggu sinyal dan persetujuan, serta mesin status; Anda dapat memeriksanya melalui perintah WP-CLI seperti wp queuety workflow timeline.
Temporal KeunggulanPlatform eksekusi tahan lama: Event History mencatat setiap langkah alur kerja, sehingga proses berlanjut dari peristiwa terakhir yang tercatat setelah crash atau gangguan, dan Temporal Cloud tersedia sebagai alternatif untuk menghosting layanan sendiri. Perbedaan dengan QueuetyTemporal Service adalah server Go ditambah database yang berjalan bersama aplikasi Anda. Queuety menyimpan statusnya dalam tabel MySQL pada koneksi database WordPress dan menjalankan worker melalui WP-CLI.

Tanya jawab

Jawaban singkat dari dokumentasi Queuety.

Instal plugin, mulai worker, lalu ikuti panduan mulai dari job pertama hingga alur kerja persetujuan dan mesin status.