Bug #51262 [Opn->Asn]: RecursiveDirectoryIterator sucks performance
Edit report at https://bugs.php.net/bug.php?id=51262&edit=1
ID: 51262
Updated by: felipe@php.net
Reported by: h dot reindl at thelounge dot net
Summary: RecursiveDirectoryIterator sucks performance
-Status: Open
+Status: Assigned
Type: Bug
Package: SPL related
Operating System: win32 only
PHP Version: 5.3.2
-Assigned To:
+Assigned To: colder
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2010-03-10 14:36:58] h dot reindl at thelounge dot net
Description:
------------
On Linux it is really easy to read recursive folder-listings with SPL even if there are many files
and folders, i need here between 1 and 3 seconds after cold start of the machine on my fedora-box
On Windows the same needs between 180 and 240 seconds and "process explorer" shows > 1
MB I/O the whole time, same script, same folders contents, same php-version
WHAT do you do on windows?
Are you reading all the 30.000 files instead listing them only?
Test script:
---------------
<?php
$files = array();
$folders = array();
$spl_objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path),
RecursiveIteratorIterator::CHILD_FIRST);
try
{
foreach($spl_objects as $filename=>$spl_object)
{
if(DIRECTORY_SEPARATOR === "\\")
{
$filename = str_replace(DIRECTORY_SEPARATOR, '/', $filename);
}
if(substr($filename, 0, 2) === './')
{
$filename = substr($filename, 2);
}
switch($spl_object->isDir())
{
case false: $files[$filename] = $spl_object->getMTime(); break;
case true: $folders[] = $filename; break;
}
}
}
catch(UnexpectedValueException $e)
{
error_log('Directory "' . $path . '" contained a directory we can not
recurse into');
return false;
}
sort($folders);
ksort($files);
$enumerate_list = array('files'=>$files, 'folders'=>$folders);
unset($folders);
unset($files);
?>
Expected result:
----------------
a normal performance
Actual result:
--------------
waiting minutes to get hughe folder-listings
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=51262&edit=1
Thread (7 messages)