Vai al contenuto principale

Esecuzione parallela con Concurrency di Laravel

Modalità stdio

Avviare un processo per ciascuna esecuzione è dispendioso, ma è l’unico modo che ha funzionato. Poiché Concurrency serializza internamente in modo complesso, restituiamo solo la stringa di content() anziché la classe SessionEvent.
use Revolution\Copilot\Facades\Copilot;
use Illuminate\Support\Facades\Concurrency;

$prompt = 'Tell me something about Copilot.';

[$gpt5_response, $sonnet_response] = Concurrency::run([
    fn () => Copilot::run($prompt, config: ['model' => 'gpt-5.2'])->content(),
    fn () => Copilot::run($prompt, config: ['model' => 'claude-sonnet-4.5'])->content(),
]);

echo 'GPT-5 Response: '.$gpt5_response;
echo 'Claude Sonnet Response: '.$sonnet_response;

Modalità TCP

Non dovendo avviare processi sembrava più veloce, ma in pratica non è cambiato molto. Con il driver Process spesso entrambi vanno in timeout dopo 60 secondi. Con il driver fork, dedicato ad ambienti CLI, solo uno dei due è riuscito. Non tutti falliscono con eccezioni. Solo gpt-5 falliva; cambiandolo in gpt-5.2 entrambi hanno avuto successo. Forse era semplicemente un problema del tempo di risposta del modello. Concurrency esiste come funzionalità, ma la sua utilizzabilità pratica non è chiara. Per le elaborazioni che richiedono tempo, la scelta di base è la queue.
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 13 luglio 2026