Queuety
Silnik przepływów pracy WordPress.
wp plugin install https://github.com/inline0/queuety/releases/latest/download/queuety.zip --activateNajnowsze wydanie v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+
use Queuety\Queuety;
Queuety::register( 'send_email', SendEmailHandler::class );
Queuety::dispatch( 'send_email', [
'to' => 'user@example.com',
'subject' => 'Welcome',
'body' => 'Hello from Queuety!',
] );W praktyce
Przepływ pracy zdefiniowany w PHP i polecenie procesu roboczego, które go uruchamia.
Przepływ pracy zatwierdzania
Przepływ pracy wykonuje krok, czeka 24 godziny, a następnie zatrzymuje się przy wait_for_approval() do czasu, gdy inny proces wyśle sygnał approval.
Opóźnienie jest przechowywane w bazie danych, więc przetrwa ponowne uruchomienie procesu roboczego i wdrożenia. Wcześnie wysłany sygnał zostaje zapisany i odebrany, gdy przepływ pracy dojdzie do oczekiwania. Anulowanie przebiegu wywołuje program obsługi on_cancel().
$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' ] );# Single worker on default queue
wp queuety work
# Process a specific queue
wp queuety work --queue=emails
# Process multiple queues in priority order
wp queuety work --queue=critical,default,low
# One-shot mode
wp queuety work --once
# Multi-worker mode
wp queuety work --workers=4
# Adaptive worker pool
wp queuety work --queue=providers --min-workers=2 --max-workers=6Bezpośrednie przejmowanie MySQL
Każdy proces roboczy działa jako długotrwały proces WP-CLI i pobiera zadania bezpośrednio z MySQL za pomocą FOR UPDATE SKIP LOCKED.
Trwałe przepływy pracy
Procesy wieloetapowe z trwałym stanem, który przetrwa limity czasu PHP, awarie i ponowienia.
Maszyny stanów
Długotrwały stan sterowany zdarzeniami z Queuety::machine(): definiuj stany i przejścia, wysyłaj zdarzenia, przeglądaj oś czasu.
Sygnały i zatwierdzenia
wait_for_signal(), wait_for_approval() i wait_for_input() wstrzymują przepływ pracy do momentu otrzymania danych z zewnątrz.
Poziomy priorytetu
Cztery poziomy: od niskiego do pilnego. W kolejce zadania o wyższym priorytecie są pobierane jako pierwsze.
Ograniczanie liczby żądań
Limity dla każdego programu obsługi w ruchomym oknie czasowym. Proces roboczy, który pobierze zadanie objęte limitem częstotliwości, odkłada je z powrotem i czeka.
Zadania cykliczne
Harmonogramowanie interwałowe i oparte na cron. Wbudowany parser cron bez zewnętrznych zależności.
Kroki równoległe
Uruchamiaj kroki przepływu pracy równolegle i czekaj na ich zakończenie, zanim przejdziesz dalej.
Metryki i rejestrowanie
Trwały dziennik w bazie danych z przepustowością, średnim czasem trwania i czasem trwania p95 oraz współczynnikiem błędów dla każdego programu obsługi.
Rezerwowy mechanizm WP-Cron
Bez dostępu do powłoki zdarzenie WordPress cron uruchamiane co minutę wywołuje jednorazowy proces roboczy dla domyślnej kolejki.
Oprogramowanie pośredniczące
Oprogramowanie pośredniczące dla zadań w stylu onion obsługuje limity częstotliwości, ograniczanie wyjątków, unikalność, limity czasu i ochronę przed nakładaniem się zadań.
PHP 8.2+
Wyliczenia, klasy tylko do odczytu, wyrażenia match, promocja parametrów konstruktora i atrybuty PHP.
Dlaczego Queuety
Stan przechowywany w MySQL
Wiersze kolejki, stan przepływu pracy, dzienniki, sygnały i przesyłane strumieniowo fragmenty są przechowywane w MySQL, więc ponowne uruchomienie procesu roboczego nie powoduje utraty stanu orkiestracji. Na granicy każdego kroku aktualizacja stanu, zakończenie zadania i umieszczenie następnego zadania w kolejce są zatwierdzane w ramach jednej transakcji.
Poza żądaniem strony
WP-Cron uruchamia się tylko podczas odwiedzin strony, a 60-sekundowe wywołanie LLM zostaje przerwane przez 30-sekundowy limit czasu PHP. Procesy robocze Queuety działają w długotrwałym procesie WP-CLI i podejmują pracę bez oczekiwania na ruch.
Zabezpieczenia dla uruchomień agentów
for_each() z trybem kworum, bramkami zatwierdzania i limitami, takimi jak max_transitions() i max_state_bytes(), utrzymują długie przebiegi agentów w określonych granicach.
Działa poza WordPress
Rdzeń oparty na bazie danych działa w każdym procesie PHP, który może otworzyć to samo połączenie z bazą danych. Dzięki temu inna aplikacja może wysyłać zadania, sygnały i odczytywać status przepływu pracy. Wyzwalacze akcji, most WP-Cron i polecenia WP-CLI nadal wymagają WordPress.
W porównaniu z
Jak Queuety ma się do programów planujących i silników przepływu pracy znanych już deweloperom WordPress.
| Narzędzie | Dobre w | Różnica w porównaniu z Queuety |
|---|---|---|
| WP-Cron | Dobre wJest wbudowany w WordPress, więc nie wymaga dostępu do harmonogramu systemowego na hostingu współdzielonym. Zadanie, które nie uruchomi się o wyznaczonej porze, zostanie wykonane przy następnym załadowaniu strony, zamiast zostać pominięte. | Różnica w porównaniu z QueuetyProcesy robocze Queuety działają niezależnie od ruchu w witrynie i wymagają długotrwałego procesu roboczego wp queuety work. Most WP-Cron zamienia cykliczne zdarzenia na harmonogramy, ale jeszcze nie wywołuje ich funkcji obsługi, dlatego nadal odpowiada za nie WP-Cron. |
| Action Scheduler | Dobre wStworzony z myślą o dystrybucji wtyczek i motywów bez konieczności dostępu do serwera. Co miesiąc przetwarza miliony płatności za Subscriptions i webhooków dla WooCommerce, a każdą czynność rejestruje w interfejsie administracyjnym. | Różnica w porównaniu z QueuetyAction Scheduler uruchamia funkcję obsługi w późniejszym czasie, podobnie jak opóźnione do_action(). Queuety dodaje wieloetapowe przepływy pracy ze stanem utrwalanym między krokami, oczekiwaniem na sygnały i zatwierdzenia oraz maszynami stanów. Możesz je przeglądać za pomocą poleceń WP-CLI, takich jak wp queuety workflow timeline. |
| Temporal | Dobre wPlatforma trwałego wykonywania: dziennik historii zdarzeń zapisuje każdy krok przepływu pracy, dzięki czemu po awarii lub przerwie działanie wznawia się od ostatniego zarejestrowanego zdarzenia. Temporal Cloud jest oferowany jako alternatywa dla samodzielnego hostowania usługi. | Różnica w porównaniu z QueuetyTemporal Service to serwer Go wraz z bazą danych, działający obok aplikacji. Queuety przechowuje swój stan w tabelach MySQL w połączeniu z bazą danych WordPress, a procesy robocze uruchamia za pośrednictwem WP-CLI. |
Pytania i odpowiedzi
Krótkie odpowiedzi z dokumentacji Queuety.
Nie w przypadku prostych zadań w domyślnej kolejce. Wtyczka uruchamia jednorazowy proces roboczy za pośrednictwem WordPress cron co minutę, o ile działa WordPress cron. Proces obsługuje jedno zadanie podczas każdego uruchomienia. Harmonogramy cykliczne, niestandardowe kolejki i krótsze opóźnienia wymagają dedykowanego procesu roboczego wp queuety work.
Nie. Wymaga mysqli lub pdo_mysql i domyślnie wybiera mysqli w WordPress. Ustaw QUEUETY_DB_DRIVER na auto, mysqli lub pdo, aby wymusić wybór sterownika.
Zadania są pobierane za pomocą SELECT ... FOR UPDATE SKIP LOCKED, które MySQL obsługuje od wersji 8.0, a MariaDB od wersji 10.6. CI projektu działa na MySQL 8.0.
Tak. Rdzeń oparty na bazie danych — zadania, procesy robocze, przepływy pracy, sygnały, maszyny stanów, artefakty, dzienniki, metryki i harmonogramy — działa przy użyciu bezpośredniego połączenia Connection. Pule procesów roboczych wymagają również stałych DB_HOST, DB_NAME, DB_USER i DB_PASSWORD. Queuety::on_action(), replace_wp_cron(), inicjalizacja wtyczki i polecenia wp queuety nadal wymagają WordPress.
Jeszcze nie. Queuety::replace_wp_cron() zamienia cykliczne zdarzenia wp_schedule_event() na harmonogramy Queuety, ale jeszcze nie uruchamia ich funkcji obsługi, dlatego zachowaj WP-Cron dla zdarzeń, które muszą się wykonać. Zdarzenia z wp_schedule_single_event() nadal obsługuje WP-Cron.
wp queuety work --workers=N uruchamia stałą pulę i ponownie uruchamia procesy potomne, które ulegną awarii; wymaga rozszerzeń pcntl i posix. --min-workers i --max-workers uruchamiają pulę adaptacyjną, która rośnie wraz z zaległościami i zmniejsza się, gdy ruch słabnie.
Zainstaluj wtyczkę, uruchom proces roboczy i korzystaj z przewodników, od pierwszego zadania po przepływy pracy zatwierdzania i maszyny stanów.