İçeriğe geç

Durum Budama

Bir iş akışı birçok adımdan geçerken biriken durum büyüyebilir. Durum budama, önemli verileri korurken durumu JSON sınırları içinde tutmak için eski adım çıktılarını otomatik olarak kaldırır.

Durum budamayı etkinleştirme

İş akışı oluşturucusunda prune_state_after() çağrısını yapın. Bağımsız değişken, çıktısı saklanacak en son adım sayısıdır:

PHP
use Queuety\Queuety;

Queuety::workflow( 'long_pipeline' )
    ->then( StepA::class )
    ->then( StepB::class )
    ->then( StepC::class )
    ->then( StepD::class )
    ->then( StepE::class )
    ->prune_state_after( 2 )
    ->dispatch( [ 'input' => $data ] );

prune_state_after( 2 ) kullanıldığında D adımı tamamlandıktan sonra A ve B adımlarının çıktıları durumdan kaldırılır. En son iki adım olan C ve D korunur.

Budama nasıl çalışır

Durum budama etkinleştirildiğinde Queuety, her adımın duruma eklediği anahtarları ayrılmış bir _step_outputs dizisinde izler. Yeni bir adıma geçildikten sonra eşik değerinden eski adımların eklediği anahtarlar kaldırılır.

Örneğin, prune_state_after( 2 ) ile:

Kod
After step 0 (StepA): state has keys from StepA + initial payload
After step 1 (StepB): state has keys from StepA + StepB + initial payload
After step 2 (StepC): state has keys from StepA + StepB + StepC + initial payload
  -> prune: StepA output removed (only 2 most recent kept)
After step 3 (StepD): state has keys from StepB + StepC + StepD + initial payload
  -> prune: StepB output removed

Neler korunur

Queuety, _ ile başlayan _steps, _queue, _priority, _max_attempts, _on_cancel, _prune_state_after ve _step_outputs gibi ayrılmış anahtarları hiçbir zaman budamaz. dispatch()'e aktarılan başlangıç yükündeki anahtarlar da en başta adım çıktısı olarak izlenmediklerinden korunur. Bunun dışında Queuety, yapılandırdığınız eşiğe göre en son N adımın çıktısını saklar.

Ne zaman kullanılır?

Durum budama, her adımın sonraki adımların ihtiyaç duymadığı veriler ürettiği çok adımlı iş akışlarında yararlıdır. Yaygın örnekler arasında her adımın yalnızca önceki bir veya iki çıktıya ihtiyaç duyduğu uzun işlem hatları, hacimli ara yapılar oluşturan ETL iş akışları ve yinelenen durum biriktirecek yinelemeli ya da tekrarlanan iş akışları yer alır. İş akışınızda yalnızca birkaç adım varsa veya ilerleyen adımlar hâlâ ilk adımların çıktılarına bağlıysa budamaya hiç ihtiyacınız olmayabilir.

Varsayılan davranış

Durum budama varsayılan olarak devre dışıdır. prune_state_after() yöntemi bir tam sayı bağımsız değişkeni alır. Bağımsız değişken olmadan çağrıldığında varsayılan değer 2'dir:

PHP
->prune_state_after()     // keeps the 2 most recent step outputs
->prune_state_after( 5 )  // keeps the 5 most recent step outputs