Edit report at https://bugs.php.net/bug.php?id=51262&edit=1
ID: 51262 Updated by: [email protected] 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
