Warum hältst du Sessions hier für einen guten Ort der Ablage?
Wenn eine Datei dazu gekommen ist seit dem letzten Listen, muss der User sowieso erst die Liste aktualisieren lassen. Dabei wird dann Verzeichnis-Array in der Session gelöscht und ein neues aufgebaut.
Halten wir fest: Statt nur zu scannen und auszugeben, muss bei Ausgabe der Liste jedes mal das Scanergebnis zusätzlich in die Session gedumpt werden. Für jeden Client!
Der Eintrag in der Session ist praktisch, weil dadurch eine Transformation zur Entkopplung der wahren Dateipfade von den dem Browser gelieferten Ressourcennamen möglich ist...
Abseits der Frage, ob es sinnvoll ist: Es gibt viele Möglichkeiten, um von dir beschriebenes zu erreichen, das ist keine Frage des Speicherorts.
Man spart sich damit einen Filesystem-Scan, der ja zur Erstellung der Liste notwendig wäre.
Liest sich gut, stimmt aber nicht(siehe oben)!
und zur Feststellung, ob die angeforderte Datei wirklich im erlaubten Verzeichnis liegt, sonst notwendig wäre.
Dafür braucht es keinen Scan, sondern einen simplen Test.