İçeriğe geç

Queuety

WordPress iş akışı motoru.

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

En son sürüm v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

Uygulamada

PHP içinde tanımlanan bir iş akışı ve onu çalıştıran çalışan komutu.

Bir onay iş akışı

İş akışı bir adım çalıştırır, 24 saat bekler ve ardından wait_for_approval() noktasında duraklayarak başka bir sürecin approval sinyalini göndermesini bekler.

Gecikme veritabanında saklanır; böylece çalışan yeniden başlatmalarına ve dağıtımlara dayanır. Erken gönderilen sinyal kaydedilir ve iş akışı bekleme noktasına geldiğinde alınır. Çalışmayı iptal etmek on_cancel() işleyicisini çağırır.

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' ] );

Doğrudan MySQL Talebi

Her çalışan uzun ömürlü bir WP-CLI sürecinde çalışır ve işleri doğrudan MySQL üzerinden FOR UPDATE SKIP LOCKED ile alır.

Kalıcı İş Akışları

PHP zaman aşımlarına, çökmelere ve yeniden denemelere dayanıklı, durumu korunan çok adımlı süreçler.

Durum Makineleri

Queuety::machine() ile uzun ömürlü, olay odaklı durum: durumları ve geçişleri tanımlayın, olay gönderin, zaman çizelgesini okuyun.

Sinyaller ve Onaylar

wait_for_signal(), wait_for_approval() ve wait_for_input(), harici girdi gelene kadar iş akışını duraklatır.

Öncelik Düzeyleri

Düşük'ten Acil'e dört düzey. Bir kuyrukta, önceliği yüksek işler önce alınır.

Hız Sınırlama

Kayan zaman aralığında işleyici başına sınırlar. Hız sınırına tabi bir işi alan çalışan, işi kuyruğa geri koyup bekler.

Yinelenen İşler

Aralık ve cron tabanlı zamanlama. Harici bağımlılığı olmayan yerleşik cron ayrıştırıcısı.

Paralel Adımlar

İş akışı adımlarını eşzamanlı çalıştırın ve ilerlemeden önce tümünün tamamlanmasını bekleyin.

Metrikler ve Günlük Kaydı

İşleyici başına iş hacmini, ortalama ve p95 süreyi ve hata oranını içeren kalıcı veritabanı günlüğü.

WP-Cron Yedek Çözümü

Kabuk erişimi olmadığında, dakikada bir çalışan WordPress cron olayı, varsayılan kuyruk için tek seferlik bir çalışan başlatır.

Ara Katman

Hız sınırları, istisna kısıtlaması, benzersizlik, zaman aşımları ve çakışma koruması için soğan tarzı iş ara katmanı.

PHP 8.2+

Enum'lar, salt okunur sınıflar, match ifadeleri, yapıcı tanıtımı ve PHP öznitelikleri.

Queuety neden tercih edilmeli

Durum MySQL içinde tutulur

Kuyruk satırları, iş akışı durumu, günlükler, sinyaller ve akış halinde iletilen parçalar MySQL içinde saklanır; bu nedenle çalışan yeniden başlatıldığında hiçbir düzenleme durumu kaybolmaz. Her adım sınırında durum güncellemesi, işin tamamlanması ve sonraki işin kuyruğa eklenmesi tek bir işlemde kaydedilir.

Sayfa isteğinin dışında

WP-Cron yalnızca sayfa ziyaretlerinde tetiklenir ve 60 saniyelik bir LLM çağrısı, 30 saniyelik PHP zaman aşımıyla sonlandırılır. Queuety çalışanları uzun süre çalışan bir WP-CLI sürecinde çalışır ve trafik beklemeden işleri alır.

Aracı çalıştırmaları için güvenlik önlemleri

Karar yeter sayısı modu, onay kapıları ve max_transitions() ile max_state_bytes() gibi sınırları olan for_each(), uzun aracı çalıştırmalarını tanımlı bir kapsamda tutar.

WordPress dışında da kullanılabilir

Veritabanı destekli çekirdek, aynı veritabanına bağlanabilen her PHP sürecinde çalışır; böylece başka bir uygulama işleri dağıtabilir, sinyal gönderebilir ve iş akışı durumunu okuyabilir. Eylem tetikleyicileri, WP-Cron köprüsü ve WP-CLI komutları için yine de WordPress gerekir.

Karşılaştırma

Queuety, geliştiricilerin zaten aşina olduğu WordPress zamanlayıcıları ve iş akışı motorlarıyla nasıl ilişkilidir?

Queuety ile diğer araçların karşılaştırması
WP-Cron Şu konularda başarılıWordPress içine yerleşiktir; paylaşımlı barındırmada sistem zamanlayıcısına erişim gerekmez. Zamanında çalışmayan bir görev atılmak yerine sonraki sayfa yüklemesinde çalışır. Queuety ile farkıQueuety çalışanları site trafiğinden bağımsız çalışır ve uzun süre çalışan bir wp queuety work süreci gerektirir. WP-Cron köprüsü yinelenen olayları zamanlamaya dönüştürür, ancak bu olayların kanca geri çağırmalarını henüz çalıştırmaz; bu nedenle bunları yönetmeye WP-Cron devam eder.
Action Scheduler Şu konularda başarılıSunucu erişimi gerektirmeden eklenti ve temalarda dağıtılmak üzere tasarlanmıştır. Her ay Abonelikler için milyonlarca ödemeyi ve WooCommerce web kancalarını işler; her eylemi bir yönetici arayüzünde kaydeder. Queuety ile farkıAction Scheduler, gecikmeli bir do_action() gibi, bir kancayı daha sonraki bir zamanda çalıştırır. Queuety ise adımlar arasında durumu korunan çok adımlı iş akışları, sinyal ve onay beklemeleri ile durum makineleri ekler; bunları wp queuety workflow timeline gibi WP-CLI komutlarıyla inceleyebilirsiniz.
Temporal Şu konularda başarılıKalıcı bir yürütme platformudur: Olay Geçmişi, iş akışının her adımını kaydeder; böylece çökme veya kesinti sonrasında bir çalıştırma kaydedilen son olaydan devam eder. Temporal Cloud, hizmeti kendiniz barındırmaya alternatif olarak sunulur. Queuety ile farkıBir Temporal Hizmeti, uygulamanızın yanında çalışan bir Go sunucusu ile veritabanından oluşur. Queuety, durumunu WordPress veritabanı bağlantısındaki MySQL tablolarında tutar ve çalışanları WP-CLI üzerinden çalıştırır.

Sorular ve yanıtlar

Queuety dokümantasyonundan kısa yanıtlar.

Eklentiyi yükleyin, bir çalışan başlatın ve ilk işinizden onay iş akışlarına ve durum makinelerine kadar kılavuzları izleyin.