php / php/php-src

iterator_count() on an SplFileObject runs endlessly

Aperta
#19,942 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

@alexandre-daubois ci sta già lavorando.

Dal 25/9/2025.

  • #19957 di @alexandre-daubois — aperta
Bug Extension: spl Status: Verified
Lingua principale
C
Stelle
40.4k
Fork
8.1k
Merge medio
2g 13h
PR unite (30g)
96

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia eseguendo lo snippet PHP segnalato con iterator_count() e SplFileObject su un file vuoto, quindi esamina l’implementazione e i test esistenti per queste API. L’attività è completata quando la chiamata termina e restituisce int(0) per il file vuoto, mantenendo al contempo i conteggi corretti per i file non vuoti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
php
Ambito
backend
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.