Alustamine
Paigaldamine
Nõuded
- PHP 8.2 või uuem ja WordPress 6.4 või uuem
- MySQL 8.0+ või MariaDB 10.6+. Töötlejad võtavad töid ja saabunud ajastusi
SELECT ... FOR UPDATE SKIP LOCKEDabil, mille vanemad serverid süntaksiveaga tagasi lükkavad. mysqlivõipdo_mysql(vt allpool)- Serveris peab olema WP-CLI, kui kasutate spetsiaalseid töötlejaid koos
wp queuety work-ga - Laiendused
pcntljaposixPHP, kui kasutate töötlejate kogumeid koos--workersvõi suvanditega--min-workers/--max-workers
Queuety vajab PHP käituskeskkonnas, mis laadib WordPress ja WP-CLI, kas mysqli või pdo_mysql. See valib draiveri automaatselt, eelistades mysqli-i WordPress käituskeskkondades ja jättes pdo_mysql eraldiseisvaks või otseseks käituseks.
Kui soovite andmebaasipõhist käituskeskkonda ilma WordPress plugina kihita, vaadake Iseseisev kasutus. See kasutab sama ühendust ja käituskeskkonna tabeleid, kuid ei sisalda WordPress konksusildu ega WP-CLI registreerimist.
Väljalaske ZIP-failist
Iga GitHub väljalaske juures on saadaval queuety.zip fail: plugin koos juba installitud Composer sõltuvustega. Installige uusim versioon käsuga WP-CLI:
wp plugin install https://github.com/inline0/queuety/releases/latest/download/queuety.zip --activate
Või laadige ZIP-fail alla ja laadige see üles menüüst Plugins > Add New > Upload Plugin. See on tavalise WordPress saidi jaoks lihtsaim viis.
Composer kaudu Composer-i hallatava WordPress jaoks
composer require queuety/queuety
Seejärel aktiveerige plugin:
wp plugin activate queuety
Paketi tüüp on wordpress-plugin. Composer paigutab selle pluginate kataloogi ainult siis, kui projekt nõuab composer/installers ja seostab selle tüübi paigaldaja teega, nagu teeb Bedrock, ning projekt peab laadima oma vendor/autoload.php (seda teeb ka Bedrock). Ilma composer/installers-ta paigaldab Composer selle asukohta vendor/queuety/queuety, kust WordPress seda ei leia, seega kasuta tavalisel WordPress-paigaldusel väljalaske ZIP-faili.
Lähtekoodist arenduse ajal
Paiguta hoidla asukohta wp-content/plugins/queuety ja seejärel paigalda PHP sõltuvused:
composer install
wp plugin activate queuety
Aktiveerimisel loob Queuety oma andmebaasitabelid (queuety_jobs, queuety_workflows, queuety_logs, queuety_schedules, queuety_queue_states, queuety_webhooks, queuety_locks, queuety_signals, queuety_workflow_dependencies, queuety_workflow_dispatch_keys, queuety_batches, queuety_chunks, queuety_workflow_events, queuety_artifacts, queuety_state_machines, queuety_state_machine_events), et töölised saaksid töid otse kohast MySQL võtta.
Vaikimisi ajastab plugin iga minut ka ühekordse töölise, kasutades WordPress cron-i järjekorra default jaoks. See annab shellita baaslahenduse töödele ja töövoogudele, mis jäävad default-i, eeldusel et WordPress cron käivitub. Iga käivitus töötleb kõige rohkem ühe töö ega käivita korduvaid ajastusi, taasta aegunud töid ega kontrolli töövoogude tähtaegu; need toimingud käivad ainult kaua töötavas wp queuety work protsessis (#14). Kohandatud järjekordade, korduvate ajastuste, väiksema viivituse või suurema koormuse jaoks kasuta spetsiaalseid wp queuety work protsesse.
Konfiguratsioon
Kõik konstandid on valikulised. Määra need failis wp-config.php enne plugina laadimist või enne, kui Queuety käivitub manustatud teemastiilis paigalduse korral:
| Konstant | Vaikeväärtus | Kirjeldus |
|---|---|---|
QUEUETY_RETENTION_DAYS |
7 |
wp queuety purge ja Queuety::purge() vaikimisi vanus päevades. Midagi ei kustutata automaatselt |
QUEUETY_LOG_RETENTION_DAYS |
0 |
Config::log_retention_days() loeb seda, kuid veel ei kasuta; logisid säilitatakse, kuni kutsud välja Queuety::purge_logs() (#15) |
QUEUETY_MAX_EXECUTION_TIME |
300 |
Töö maksimaalne kestus sekundites enne ajalõppu (veel ei jõustata, vt Jobs) |
QUEUETY_WORKER_SLEEP |
1 |
Ooteaeg sekundites, kui järjekord on tühi |
QUEUETY_WORKER_MAX_JOBS |
1000 |
Tööde arv, mille järel tööline taaskäivitub |
QUEUETY_WORKER_MAX_MEMORY |
128 |
Töömälu maksimum MB-des enne töölise taaskäivitumist |
QUEUETY_RETRY_BACKOFF |
exponential |
Ooteaja strateegia: exponential, linear või fixed |
QUEUETY_STALE_TIMEOUT |
600 |
Ooteaeg sekundites, enne kui takerdunud tööd taastatakse |
QUEUETY_CACHE_TTL |
5 |
Vahemälu vaikeväärtuse TTL sekundites |
QUEUETY_DEBUG |
false |
Luba üksikasjalik töölise logimine |
QUEUETY_CLI_COMMAND |
queuety |
Juurkataloogi WP-CLI käsu nimi |
QUEUETY_TABLE_PREFIX |
queuety_ |
Kõigi Queuety tabelite ühine põhinimi pärast WordPress DB-prefiksit |
QUEUETY_TABLE_JOBS |
queuety_jobs |
Tööde tabeli nimi |
QUEUETY_TABLE_WORKFLOWS |
queuety_workflows |
Töövoogude tabeli nimi |
QUEUETY_TABLE_LOGS |
queuety_logs |
Logide tabeli nimi |
QUEUETY_TABLE_SCHEDULES |
queuety_schedules |
Ajastuste tabeli nimi |
QUEUETY_TABLE_SIGNALS |
queuety_signals |
Signaalide tabeli nimi |
QUEUETY_TABLE_WORKFLOW_DEPENDENCIES |
queuety_workflow_dependencies |
Töövoogude sõltuvuste ootetabeli nimi |
QUEUETY_TABLE_WORKFLOW_DISPATCH_KEYS |
queuety_workflow_dispatch_keys |
Püsivate töövoogude idempotentsustabeli nimi |
QUEUETY_TABLE_CHUNKS |
queuety_chunks |
Voogedastatavate osade tabeli nimi |
QUEUETY_TABLE_QUEUE_STATES |
queuety_queue_states |
Järjekordade olekute tabeli nimi |
QUEUETY_TABLE_WEBHOOKS |
queuety_webhooks |
Veebihaakide tabeli nimi |
QUEUETY_TABLE_LOCKS |
queuety_locks |
Lukkude tabeli nimi |
QUEUETY_TABLE_BATCHES |
queuety_batches |
Partiide tabeli nimi |
QUEUETY_TABLE_WORKFLOW_EVENTS |
queuety_workflow_events |
Töövoo sündmuslogi tabeli nimi |
QUEUETY_TABLE_ARTIFACTS |
queuety_artifacts |
Töövoo artefaktide tabeli nimi |
QUEUETY_TABLE_STATE_MACHINES |
queuety_state_machines |
Olekumasinate tabeli nimi |
QUEUETY_TABLE_STATE_MACHINE_EVENTS |
queuety_state_machine_events |
Olekumasina sündmuslogi tabeli nimi |
QUEUETY_DB_DRIVER |
auto |
MySQL draiver: auto, mysqli või pdo. auto eelistab mysqli, kui WordPress on laaditud, muul juhul pdo_mysql ja seejärel mysqli |
Ressursside vastuvõtu ja kohanduva töötlusjõudluse konstandid (QUEUETY_RESOURCE_*, QUEUETY_WORKER_POOL_*) on loetletud lehel Workers.
QUEUETY_TABLE_PREFIX muudab ainult tabelinimede osa Queuety. Andmebaasi prefiks WordPress ümbritseb tulemust endiselt, seega $wpdb->prefix = 'wp_' ja QUEUETY_TABLE_PREFIX = 'themequeue_' loovad näiteks selliseid tabeleid nagu wp_themequeue_jobs. Üksikute tabelite puhul on selgesõnalistel konstantidel QUEUETY_TABLE_* endiselt eelis.
Eraldiseisvate ühenduste puhul saab ka määrata ühendusepõhise tabeliprefiksi Queuety:
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
table_prefix: 'themequeue_',
);
See säilitab andmebaasiprefiksi WordPress ja muudab ainult tabeli Queuety segmenti.
Sinu esimene töö
Loo käsitlejaklass, mis rakendab liidest Handler:
use Queuety\Handler;
class SendEmailHandler implements Handler {
public function handle( array $payload ): void {
wp_mail( $payload['to'], $payload['subject'], $payload['body'] );
}
public function config(): array {
return [
'queue' => 'emails',
'max_attempts' => 5,
];
}
}
Registreeri see ja saada töö järjekorda:
use Queuety\Queuety;
Queuety::register( 'send_email', SendEmailHandler::class );
Queuety::dispatch( 'send_email', [
'to' => 'user@example.com',
'subject' => 'Welcome',
'body' => 'Hello from Queuety!',
] );
Või kasuta tänapäevast väljakutsutava töö klassi:
use Queuety\Contracts\Job;
use Queuety\Dispatchable;
readonly class SendEmailJob implements Job {
use Dispatchable;
public function __construct(
public string $to,
public string $subject,
public string $body,
) {}
public function handle(): void {
wp_mail( $this->to, $this->subject, $this->body );
}
}
SendEmailJob::dispatch( 'user@example.com', 'Welcome', 'Hello from Queuety!' );
Sinu esimene töövoog
Määra sammu käsitlejad, mis rakendavad liidest Step:
use Queuety\Step;
class FetchDataHandler implements Step {
public function handle( array $state ): array {
$user = get_user_by( 'ID', $state['user_id'] );
return [ 'user_name' => $user->display_name ];
}
public function config(): array {
return [];
}
}
class CallLLMHandler implements Step {
public function handle( array $state ): array {
$response = wp_remote_post( 'https://api.openai.com/v1/chat/completions', [
'body' => json_encode( [ 'prompt' => "Generate report for {$state['user_name']}" ] ),
] );
return [ 'llm_response' => wp_remote_retrieve_body( $response ) ];
}
public function config(): array {
return [ 'max_attempts' => 5 ];
}
}
class FormatOutputHandler implements Step {
public function handle( array $state ): array {
$url = save_report( $state['user_name'], $state['llm_response'] );
return [ 'report_url' => $url ];
}
public function config(): array {
return [];
}
}
Saada töövoog järjekorda:
$workflow_id = Queuety::workflow( 'generate_report' )
->then( FetchDataHandler::class )
->then( CallLLMHandler::class )
->then( FormatOutputHandler::class )
->dispatch( [ 'user_id' => 42 ] );
Käivita tööline
wp queuety work
Tööline otsib ootel töid, käivitab need, viib töövooge edasi ja jääb tühja järjekorra korral ootama. Peatamiseks vajuta Ctrl+C; see lõpetab protsessi kohe, ka keset tööd (vt Workers).
Ülaltoodud SendEmailHandler saadab oma tööd järjekorda emails, kasutades config(), seega järjekorda default jälgiv tööline neid kätte ei saa. Nimeta kõik kasutatavad järjekorrad:
wp queuety work --queue=emails,default
Kui sa spetsiaalset töölist ei käivita, on Queuety-il endiselt eespool kirjeldatud kord minutis käivitatav vaikimisi varulahendus WordPress cron, mis on piiratud järjekorraga default ja ühe tööga käivituse kohta. Spetsiaalne tööline pakub suuremat läbilaskevõimet ja väiksemat viivitust.
Tootmiskeskkonnas käivita mitu töölist:
wp queuety work --workers=4
Töötle mitut järjekorda prioriteetsuse järjekorras:
wp queuety work --queue=high,default,low
Mis edasi
- Jobs täieliku järjekorda saatmise ja käsitlemise juhendi jaoks
- Workflows ahelate, paralleelsete sammude, tingimuslike harude ja töövoogude käivitamise kohta
- Middleware piirkiiruse, pärssimise ja kohandatud töötlusahela loogika jaoks
- Batching töögruppide saatmiseks koos tagasihelistustega
- Streaming Steps voogedastatud andmete salvestamiseks osade kaupa
- Scheduling korduvate tööde jaoks
- Caching ühendatava vahemälukihi jaoks
- Testing QueueFake'i ja testiväidete jaoks
- CLI Reference kõigi saadaolevate käskude jaoks
- PHP API programmiliseks juurdepääsuks