Ho un comando Symfony Console
che scorre su una collezione potenzialmente grande di elementi e svolge un'attività con ciascuno di essi. Poiché la raccolta può essere grande, il comando può richiedere molto tempo per essere eseguito (ore). Al termine del comando, vengono visualizzate alcune statistiche.Interruzione e ripresa di un comando di Symfony Console
Vorrei rendere possibile l'abortire il comando in un modo piacevole. In questo momento se lo interrompo (cioè con ctrl + c nella CLI), non esiste un riepilogo delle statistiche e non è possibile emettere i parametri necessari per riprendere il comando. Un altro problema è che il comando potrebbe essere terminato nel mezzo della gestione di un oggetto: sarebbe meglio se potesse terminare solo tra la gestione degli articoli.
Quindi c'è un modo per dire a un comando di "abortire il più presto possibile", o il comando ctrl + c deve essere interpretato come tale?
Ho provato a utilizzare l'evento ConsoleEvents::TERMINATE
, sebbene i gestori per questo vengano attivati solo al completamento del comando, non quando I ctrl + c la cosa. E non sono stato in grado di trovare ulteriori informazioni su come rendere tali comandi ripristinabili.
Penso che rendendo il tuo input come input interattivo sarai in grado di risolvere il problema, ma non so esattamente come dovresti implementarlo in modo che * premendo un tasto specifico termini il comando e ti dia le statistiche * Questo link potrebbe aiutare [http://davidbu.ch/slides/20130613_techtalk_symfony-console.html] per creare il comando interattivo – Javad
oppure puoi controllare il listener di eventi in comando e basare su quello che termina il tuo comando [http: // symfony .com/doc/current/components/console/events.html] – Javad