iterator_count() on an SplFileObject runs endlessly
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
The following code:
<?php
touch("/tmp/empty");
var_dump(iterator_count(new SplFileObject("/tmp/empty", "r")));
Resulted in this output:
(None. Script runs forever)
But I expected this output instead:
int(0)
It fails on files of any size, but this is the simplest I can reproduce the problem with.
Can reproduce this all the way to PHP 5.6 which is the earliest version I tried
PHP Version
PHP 8.4.12 (cli) (built: Sep 8 2025 21:17:50) (NTS)
Copyright (c) The PHP Group
Built by https://github.com/docker-library/php
Zend Engine v4.4.12, Copyright (c) Zend Technologies
with Zend OPcache v8.4.12, Copyright (c), by Zend Technologies
Operating System
Tested under Linux and macOS
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, das gemeldete PHP-Snippet mit iterator_count() und SplFileObject für eine leere Datei auszuführen, und untersuche anschließend die Implementierung und die vorhandenen Tests für diese APIs. Erledigt ist die Aufgabe, wenn der Aufruf beendet wird und für die leere Datei int(0) zurückgibt, während die korrekten Zählwerte für nicht leere Dateien erhalten bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 25/100