KKUT Docs

Asenkron İşlemler

Uzun süren komutları arka planda başlatın ve sonucu jQuery gerektirmeden izleyin.

Async, bir KUT konsol komutunu ayrı PHP sürecinde başlatır ve işlem sonucunun tarayıcıdan izlenmesini sağlar. Üretilen istemci kodu yerel fetch(), FormData ve zamanlayıcı API’lerini kullanır; jQuery gerektirmez.

Dinleme adresini belirleme

public function main()
{
    Async::setSocketURI('Jobs/socket');
}

public function socket() : void
{
    Async::socket();
}

Async::socket() JSON yanıtı üretir ve isteği sonlandırır. Bu yöntemin arkasına başka çıktı yazmayın.

İşi başlatma

$processId = Async::run('command:run Report:build',
[
    'reportId' => 42
]);

$this->processId = $processId;

Async, Services.processor.path altında tanımlanan CLI PHP yolunu değiştirmeden kullanır. KUT sunucu panelini veya PHP kurulum dizinini tahmin etmez. Ayar yalnızca gerçek CLI çalışmasında boşsa PHP_BINARY kullanılabilir; web/FPM isteğinde boş bırakılırsa açıklayıcı bir yapılandırma hatası üretilir.

Config::set('Services', 'processor', [
    'driver' => 'exec',
    'path'   => PHP_BINDIR.'/php'
]);

Komut tarafı

public function build(string $processId) : void
{
    Async::process($processId, function(array $data)
    {
        $file = ReportService::build($data['reportId']);
        Async::output(['file' => $file]);
    }, true);
}

Sonucu görünümde izleme

<script>
@Async::success
({[
    const status = document.getElementById('report-status');

    if(data.status === 'processing')
    {
        status.textContent = 'Rapor hazırlanıyor…';
    }
    else if(data.file)
    {
        status.textContent = 'Rapor hazır.';
    }
]})::error
({[
    document.getElementById('report-status').textContent =
        'İşlem durumu alınamadı.';
]})::listen($this->processId, 1000)
</script>

Dinleyici aynı anda yalnızca bir istek gönderir. Sunucu processing dışında bir sonuç verdiğinde zamanlayıcı durur. HTTP hataları error callback’ine iletilir.

Güvenlik: İşlem kimliğini kullanıcı girdisinden doğrudan dosya yolu olarak kabul etmeyin. Komuta gönderilen verileri uygulamanın normal yetkilendirme ve doğrulama kurallarıyla kontrol edin.
KUT Framework 1.0Katmanlı Uygulama Tabanı

Kur. Uyarla. Türet.