Lietošana patstāvīgi
Queuety ir iepakots kā WordPress spraudnis, taču lielākajai daļai izpildlaika nav vajadzīgs aktīvs WordPress pieprasījums.
Rinda, darbplūsmu dzinis, stāvokļu mašīnas, signāli, artefakti, grupēšana, plānošana, reģistrēšana, metrikas un resursu pārvaldība darbojas ar tām pašām MySQL tabulām. Ja cits PHP process var atvērt to pašu datubāzi, tas var tieši izmantot šo pamatdaļu.
Tā ir patstāvīgās darbības robeža Queuety. Datubāzē balstīto orķestrēšanas dzini var izmantot ārpus WordPress. Savienotāji WordPress joprojām pieder WordPress.
Kas darbojas ārpus WordPress
Izmantojot tiešu Connection, patstāvīgs process var inicializēt Queuety un izmantot
tās pašas fasādes metodes, ko spraudnis izmanto pamatdarbības izpildei:
- palaist uzdevumus
- darbināt darbiniekus un darbinieku kopumus
- veidot un palaist darbplūsmas
- sūtīt signālus, apstiprinājumus un darbplūsmas ievadi
- veidot un palaist stāvokļu mašīnas
- pārbaudīt darbplūsmu un mašīnu statusu
- glabāt un nolasīt artefaktus
- vadīt grupēšanu, ķēdēšanu un periodiskos grafikus
- vaicāt žurnālus, metriku, rindas un izpildlaika statusu
Tas nozīmē, ka ārējs produkts var piekļūt tam pašam orķestrēšanas stāvoklim, vispirms nepalaižot WordPress, ja vien tas izmanto to pašu datubāzi un tabulu nosaukumus.
Darbinieku kopumi pašlaik ir vienīgais izņēmums: Queuety::run_worker_pool() un
Queuety::run_auto_scaling_worker_pool() nolasa WordPress DB_HOST,
DB_NAME, DB_USER un DB_PASSWORD konstantes, nevis inicializēto
savienojumu, tāpēc patstāvīgam procesam šīs konstantes ir jādefinē, pirms tas
palaiž kopumu (#5).
Kas paliek WordPress vidē
WordPress paredzētais savienotāju slānis joprojām ir atkarīgs no tā, vai ir ielādēts WordPress.
Tas ietver:
- spraudņa ielādes un aktivizēšanas darbības
queuety.phpvidē Queuety::on_action(), kam nepieciešamsadd_action()Queuety::replace_wp_cron()unQueuety::restore_wp_cron(), kas ir atkarīgi no WordPress cron filtriem undo_action()- īstais komandas
wp queuety ...reģistrācijas ceļš, kas ir atkarīgs no tā, vai WP-CLI ielādē WordPress
Šīs daļas ir pamatdarbības izpildlaika adapteri. Tās pašas nav izpildlaika vide.
Inicializēšana
Patstāvīgās darbības ceļš ir apzināti vienkāršs. Atveriet DB balstītu Connection,
inicializējiet fasādi un pārliecinieties, ka shēma ir izveidota.
use Queuety\Connection;
use Queuety\Queuety;
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
);
Queuety::init( $conn );
Queuety::ensure_schema();
Pēc tam ir pieejams parastais izpildlaika API:
Queuety::dispatch( 'send_email', [ 'to' => 'user@example.com' ] );
$workflow_id = Queuety::workflow( 'report' )
->then( FetchReportData::class )
->then( RenderReport::class )
->dispatch( [ 'report_id' => 42 ] );
$machine_id = Queuety::machine( 'agent_session' )
->state( 'awaiting_input' )
->on( 'message', 'planning' )
->state( 'planning' )
->action( PlanSessionAction::class )
->dispatch();
Tabulu nosaukumi
Patstāvīgai lietošanai nav vajadzīgi tieši WordPress tabulu nosaukumi. Nepieciešama tikai stabila prefiksu piešķiršanas stratēģija.
Ja savienojat Queuety ar WordPress datubāzi, izmantojiet to pašu prefiksu, ko
spraudnis tur izmanto. Ja izmantojat Queuety atsevišķā datubāzē, savienojuma
prefikss var būt jebkurš, ko paredz jūsu resursdatora lietotne. Queuety paredzēto tabulu
daļu joprojām nosaka QUEUETY_TABLE_PREFIX un katras tabulas
pārrakstīšanas iestatījumi.
Iegultas izpildlaika vides, kas koplieto vienu datubāzi, var iestatīt šo Queuety paredzēto daļu katram savienojumam:
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
table_prefix: 'themequeue_',
);
Tādējādi datubāzes WordPress prefikss paliek neskarts, bet tabulas, piemēram,
queuety_jobs, tiek atrisinātas uz wp_themequeue_jobs.
Priekšstats par darbību
Vienkāršākais veids, kā izprast šo sadalījumu:
- Queuety pamatdaļa = rinda, darbinieki, darbplūsmas, stāvokļu mašīnas, signāli, artefakti un izpildlaika metadati
- WordPress adapteris = spraudņa ielāde, aizķeru savienotāji, WP-Cron aizstāšana un WP-CLI reģistrācija
Tādējādi tiek saglabāts viens orķestrēšanas dzinis, bet WordPress paredzētā notikumu un pieprasījumu integrācija paliek tai paredzētajā vietā.