Jak obsługiwać CTRL + C w PHP w linii poleceń? Funkcje Pcntl_*
nie działają w systemie Windows.PHP CLI w Windows: obsługa poleceń Ctrl-C?
Odpowiedz
Jeśli chcesz uruchomić zadanie w PHP za pomocą wiersza poleceń, które zajmuje bardzo dużo czasu, spróbuję zorganizować to w odznaki i śledzić to, co już zostało zrobione.
Teraz możesz całkowicie przetworzyć każdy znaczek (np. Proces, a następnie zapisać go w pliku xml), a nie tylko po przetworzeniu całej listy. Tak więc awaria/zatrzymanie się pomiędzy nimi anuluje tylko jedną odznakę, a nie wszystkie.
Jeśli przechowujesz swoją aktualną pozycję po każdym odznaczeniu, możesz łatwo wznowić działanie po zawieszeniu się skryptu lub jego zatrzymaniu.
Teraz, jeśli sprawdzisz listę procesów systemu operacyjnego, aby sprawdzić, czy skrypt jest uruchomiony, możesz napisać zadanie cron, które uruchamia skrypt co X minut, jeśli uległo awarii i nie było jeszcze uruchomione.
Więc TL; DR
- praca procesowe w małych odznaki
- Zapisz pozycję ostatniego pomyślnie przetworzone odznaki
- Sprawdź, czy już proces uruchomiony na początku
- Stale uruchomić skrypt, aż wszyscy są szczęśliwi !
Poza tym lubię PHP dla małych zadań wiersza poleceń, ale jeśli masz tak duże zadanie, coś innego może być lepiej dopasowane. Sprawdź, co może być stabilne przez długi czas i może pokazać postęp. Może mała aplikacja C# z minimalistycznym gui.
To może nie być rozwiązanie CtRL + C, którego szukasz, ale jest to działające rozwiązanie. Mam wielką wątpliwość, czy PHP może obsłużyć przerwanie procesu! Możesz jednak spróbować szczęścia z "register_shutdown_function" – ToBe
No cóż, istnieje pcntl_signal, ale to tylko dla systemów uniksowych. –
- 1. Obsługa sygnałów w systemie Windows
- 2. Wersja PHP na linii poleceń Windows
- 3. PHP -> CLI przestał działać
- 4. PHP APC w trybie CLI
- 5. Obsługa bajtów w PHP
- 6. Nie znaleziono PHP-CLI
- 7. Wiersz poleceń Doctrine ORM z Silex: Brakuje pliku "cli-config.php" lub "config/cli-config.php" w projekcie
- 8. Ograniczanie poleceń S3 za pomocą aws cli
- 9. Wykonywanie partii poleceń za pomocą redis cli
- 10. gdzie mogę znaleźć php.ini dla php-cli
- 11. Obsługa żądania json w PHP
- 12. wiersze poleceń Windows Window wielu poleceń
- 13. Nowa linia na PHP CLI
- 14. Jak wprowadzić chińskie znaki w php cli?
- 15. Równoważnik $ _ENV ['APACHE_RUN_USER'] w PHP-CLI
- 16. Wyświetlacz Wyjście php-cli w kolumnach
- 17. Wiersz poleceń SQLPLUS z plikiem wsadowym Windows
- 18. Wykonywanie poleceń "php app/console" na serwerze
- 19. WPF MVVM Używanie poleceń a obsługa zdarzeń
- 20. Drukowanie na terminalu podczas buforowania wyjściowego w skryptach CLI PHP
- 21. Przekleństwa dla PHP na Windows
- 22. Kodowanie UTF-8 do Windows w linii poleceń
- 23. Pamięć podręczna zapisu z pamięci podręcznej z systemu Windows CLI
- 24. Zbyt wolno ember-cli budować na windows
- 25. Argumenty wiersza poleceń w języku Python (Windows)
- 26. Obsługa przekroczenia limitu czasu mydła w PHP
- 27. Obsługa źle sformułowanych JSON w PHP
- 28. Obsługa wyjątków w PHP: gdzie idzie $ e?
- 29. Kompilator PHP dla Windows
- 30. Instalowanie aplikacji phonegap do emulatora androida przy użyciu Windows CLI
co próbujesz osiągnąć? –
Brak systemu Windows do testowania, być może ['w32api_register_function'] (http://www.php.net/manual/en/function.w32api-register-function.php) z [' SetConsoleCtrlHandler'] (http: // msdn. microsoft.com/en-us/library/windows/desktop/ms686016(v=vs.85).aspx), ale to jest szalenie domysły ... i prawdopodobnie błędne. – Wrikken
@Dagon Potrzebuję mojego skryptu, aby coś zrobić, gdy go przerywam. Na przykład pisz w pamięci xml dom do pliku, zanim wyjdziesz. – x74x61