Próbuję zrobić prostą wyszukiwarkę plików na moim komputerze w php.
Pod spodem prezentuję to co już zrobiłem, a następnie zadam kilka pytań.
<?php // funkcja wywołuje plik function _exec ($dest) { $cache="cache/{$arr[0]}"; } // funkcja zwraca wagę pliku (w skrócie) function _fileSize ($bytes, $precision = 2) { $bytes/=pow(1024, $pow); } // funkcja zwraca rozszerzenie pliku function _fileType ($file) { return $ext[0]; } // funkcja zwraca szczegółowe informacje znalezionego pliku function _file ($count, $dest, $fname) { $ftype=_fileType($fname); $fgroup=null; foreach ($arrType as $l=>$v) $fgroup=$l; require_once("lib/image.php"); @img_resize("$dest/$fname", 100, "cache", "mini_{$fname}"); } break; } $txt=''; $txt.='<div class="f">'.$count; $txt.=($fgroup=='Graphics')?"<img class=\"mini\" src=\"cache/mini_{$fname}\">":''; $txt.="<p class=\"fname\"><a href=\"java script:;\" onclick=\"window.open('?string=$string&open=$dest/$fname')\">".str_replace(".{$ftype}",'',$fname)."</a> ($fsize)</p>"; $txt.="<p class=\"fdest\">$dest</p>"; $txt.="<p class=\"fdate\">$fdate | $ftype | $fgroup</p>"; $txt.='</div>'; return $txt; } // funkcja z mechanizmem przeszukiwania katalogów function _browse ($dir, $level, $string=null) { if ($level<=0) return false; $txt=''; if ($fname!='.' && $fname!='..') { if ($string && preg_match('/(.*)'.strtolower($string).'(.*)/',strtolower($fname))) $txt.=_file($count++, $dir, $fname); if (!$string) $txt.=_file($count++, $dir, $fname); } else $txt.=_browse($dir.'/'.$fname,$level-1,$string); } } return $txt; } $string=($_GET['string'])?$_GET['string']:null; // wyszukiwana fraza // typy plików $arrType['Graphics']=array('jpg','Jpg','JPG','jepg','Jepg','JEPG','gif','Gif','GIF','png','Png','PNG'); $root="d:/"; // ścieżka od której skrypt ma zacząć wyszukiwać $maxLevel=3; // głębokość do jakiej ma zajżeć skrypt (ilość subfolderów) $count=1; // licznik znalezionych elementów ?>
Wyżej pokazany skrypt działa, ale za płytko. To znaczy że wyświetli mi pliku do 4 podkatalogów, a jak już jest głębiej (5, 6 i więcej katalogów) to skrypt jest przerywany.
Pytania:
Czy jest sens zagłębiania się w kodzie php, żeby wykonać takią wyszukiwarkę?
Jeśli tak, to jak poprawić ten skrypt żebym osiągnął głębokość np. 10 podkatalogów lub więcej?