Come posso gestire CTRL + C in PHP sulla riga di comando? Le funzioni Pcntl_*
non funzionano in Windows.CLI PHP in Windows: gestione dei comandi Ctrl-C?
risposta
Se si desidera eseguire un'attività in PHP tramite riga di comando che richiede molto tempo, proverei ad organizzarlo in badge e tenere traccia di ciò che è già stato fatto.
Ora è possibile elaborare completamente ciascun badge (ad esempio: elaborare e quindi archiviarlo in un file xml) e non solo dopo l'elaborazione dell'intero elenco. Quindi un crash/stop in mezzo cancellerà solo un badge e non tutti.
Se si memorizza la posizione corrente dopo ogni distintivo da qualche parte, si può facilmente riprendere quando lo script si blocca o si arresta.
Ora, se si controlla l'elenco dei processi del sistema operativo per vedere se lo script è in esecuzione, è possibile scrivere un processo cron che avvia lo script ogni X minuti se si è verificato un arresto anomalo e non è ancora in esecuzione.
Così, TL; DR
- lavoro processo in piccoli distintivi
- posizione Memorizza dello scorso distintivo elaborato con successo
- Controllare processo già in esecuzione all'avvio
- Iniziamo continuamente copione fino a quando tutti sono felici !
A parte questo, mi piace PHP per piccoli lavori da riga di comando, ma se hai un'attività così grande, qualcos'altro potrebbe essere più adatto. Cerca qualcosa che può funzionare a lungo e può mostrare i suoi progressi. Forse una piccola app C# con un gui minimalista.
Questa potrebbe non essere la soluzione CtRL + C che cercavi ma è una soluzione funzionante. Dubito fortemente che PHP possa gestire aborti di processo! Potresti comunque tentare la fortuna con "register_shutdown_function" – ToBe
Bene, c'è pcntl_signal, ma è solo per i sistemi Unix. –
- 1. Registrazione Django dei comandi di gestione personalizzati
- 2. Ambiente pseudografico in Windows Prompt dei comandi
- 3. Gestione dei pacchetti in git per windows?
- 4. Gestione di caratteri estesi nei comandi di Windows?
- 5. ThreadPool dei processi CLI
- 6. Django: comandi di gestione divisi in sottocartelle
- 7. Confusione gestione risorse C++/CLI
- 8. Compilando il codice C dal prompt dei comandi in Windows?
- 9. Come eseguire nodejs senza prompt dei comandi in windows?
- 10. è possibile installare telegram-cli in windows
- 11. PHP APC in modalità CLI
- 12. Comandi Throttling S3 con aws cli
- 13. Come eseguire una ricerca cronologica dei comandi di retromarcia in redis-cli
- 14. Formato di codifica file tramite prompt dei comandi: Windows
- 15. Reputazione StackOverflow utilizzando il prompt dei comandi di Windows (cmd.exe)
- 16. Troppo lento ember-cli build su windows
- 17. Utilizzare ssh dal prompt dei comandi di Windows
- 18. Come eseguire .sh sul prompt dei comandi di Windows?
- 19. Ignora $ in primo dei comandi
- 20. shell di prompt dei comandi di Windows per sqlite3
- 21. Windows: come specificare il comando multiline al prompt dei comandi?
- 22. Resize prompt dei comandi tramite i comandi
- 23. Gestione IIS in Windows 10
- 24. Il prompt dei comandi di Git Windows si blocca durante i comandi Git con (END)
- 25. PHP $ _GET passando nel prompt dei comandi di Linux
- 26. Equivalente di $ _ENV ['APACHE_RUN_USER'] in PHP-CLI
- 27. Windows Phone 7.1 Gestione dei temi chiari/scuri
- 28. PHP Comandi non sincronizzati
- 29. Elenco dei comandi y86?
- 30. PHP7 cli vs php-fpm
cosa stai cercando di ottenere? –
Nessuna finestra da testare, forse ['w32api_register_function'] (http://www.php.net/manual/en/function.w32api-register-function.php) con [' SetConsoleCtrlHandler'] (http: // msdn. microsoft.com/en-us/library/windows/desktop/ms686016(v=vs.85).aspx), ma questo è indovinato qui ... e molto probabilmente sbagliato. – Wrikken
@Dagon Ho bisogno che il mio script faccia qualcosa quando lo interrompo. Ad esempio, scrivi in-memory xml dom to file, prima di uscire. – x74x61