Bug: CLI Commands do not respond to Ctrl-C interrupts (might be an enhancement not a bug)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
Start by reproducing the issue with the long-running command shown in the report on Windows CLI. Review how a command's run(array $params) method is invoked and how CLI::write and CLI::error are used, then compare the reported sapi_windows_set_ctrl_handler and pcntl_signal approaches. Done means Ctrl-C reliably halts the command with a clear abort message on supported platforms, with coverage for the relevant behavior.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
PHP Version
8.4
CodeIgniter4 Version
4.7.4
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
Windows
Which server did you use?
cli-server (PHP built-in webserver)
Environment
development
Database
MySQL 8.4.9
What happened?
CLI commands do not respond to the user pressing Ctrl-C to abort
Steps to Reproduce
Create a long running or infinite loop as a command and try and press Ctrl-C. For example:
public function run(array $params)
{
while ( 1 > 0 ) {
CLI::write("Waiting...");
}
}
Expected Output
I expected the execution to halt.
Anything else?
I have (with Claude's assistance) implemented the following workaround which should possibly be included in the core.
public function run(array $params)
{
// Abort on Ctrl-C
if (function_exists('sapi_windows_set_ctrl_handler')) {
// Windows
sapi_windows_set_ctrl_handler(function ($event) {
if ($event === PHP_WINDOWS_EVENT_CTRL_C) {
CLI::error("\nProcess aborted by Ctrl-C.");
exit(1);
}
});
} else if (function_exists('pcntl_signal')) {
// Linux / macOS fallback
pcntl_async_signals(true);
pcntl_signal(SIGINT, function() {
CLI::error("\nProcess aborted by Ctrl-C.");
exit(1);
});
}
...
- Vorherrschende Sprache
- PHP
- Sterne
- 6k
- Forks
- 2k
- Ø Merge
- 1 T. 22 Std.
- Gemergte PRs (30 T.)
- 59
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus codeigniter4/CodeIgniter4
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
codeigniter4/CodeIgniter4#10616 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
codeigniter4/CodeIgniter4#10618 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 62/100
codeigniter4/CodeIgniter4#10617 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
codeigniter4/CodeIgniter4#10615 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
dev
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
codeigniter4/CodeIgniter4#10427 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in codeigniter4/CodeIgniter4
Ähnliche Issues
-
sync-en
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
sync-en
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 4 Tagen
-
Перевод устарел
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
bug
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 76/100
m3ue/m3u-editor#1604 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
femiwiki/docker-mediawiki#1497 ·
Maintainer antworten meist innerhalb von 1 Tag