php / php/php-src

iterator_count() on an SplFileObject runs endlessly

Ouverte
#19,942 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@alexandre-daubois y travaille déjà.

Depuis le 25/9/2025.

  • #19957 par @alexandre-daubois — ouverte
Bug Extension: spl Status: Verified
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par exécuter l’extrait PHP signalé avec iterator_count() et SplFileObject sur un fichier vide, puis examinez l’implémentation et les tests existants pour ces API. C’est terminé lorsque l’appel se termine et renvoie int(0) pour le fichier vide, tout en conservant les comptages corrects pour les fichiers non vides.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
backend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.