Hello,
Fast die ganze Funktion kannst Du vermutlich ganz leicht gegen
glob() http://de3.php.net/manual/en/function.glob.php
ersetzen. Welche Features benötigst Du denn wirklich?
Die Funktion is_file() benötigt vermutlich die viele Zeit. Darauf wirst Du aber nicht verzichten können, wenn wirklich nur Files und bei Linux damit auch Links auf Files gefunden werden sollen.
Du könntest mal überlegen, wie Du das "only_files" durch die Hintertür erreichen kannst.
Versuch es doch mal mit glob($muster, GLOB_MARK) und lasse dann in der Ergebnismenge im Array alle Einträge mit unset löschen, die am Ende einen Slash stehen haben.
Dafür muss dann nicht jedes Mal wieder eine Verbindung zum Filesystem aufgebaut werden.
Durch das Muster kannst Du sowieso schon . und .. ausschließen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg