Witam.
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) {
$units=array('B', 'KB', 'MB', 'GB', 'TB'); $pow=floor(($bytes?log
($bytes):0
)/log
(1024
)); $bytes/=pow(1024, $pow);
return round($bytes, $precision).' '.$units[$pow]; }
// funkcja zwraca rozszerzenie pliku
function _fileType ($file) {
return $ext[0];
}
// funkcja zwraca szczegółowe informacje znalezionego pliku
function _file ($count, $dest, $fname) {
$fsize=_fileSize
(filesize($dest.'/'.$fname)); $ftype=_fileType($fname);
$fgroup=null;
foreach ($arrType as $l=>$v)
$fgroup=$l;
if ($fgroup=='Graphics' && !file_exists("cache/mini_{$fname}")) { 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='';
while (($fname=readdir($dh))!==false) if ($fname!='.' && $fname!='..') {
if (!is_dir($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'); $arrType['Music']=array('mp3','Mp3','MP3'); $arrType['Video']=array('avi','Avi','AVI');
$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
echo ($string) ? _browse
($root,$maxLevel,$string) : ''; // wywołanie wyszukiwarki ?>
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?