nchristoph
Erfahrenes Mitglied
Hallo,
ich habe vor, meine Ordnersuche zu beschleunigen.
Selbige habe ich vor in etwa einem Jahr mit der Hilfe von Yaslaw erstellt.
Leider sind es mittlerweile ca. 5000 Dateien die im Höchstfall durchsucht werden müssen was halt dementsprechend lange dauert.
Hier mal der Code:
In den Templates ist nur HTML Code.
Gibt es irgendeine Möglichkeit, diese Art der Abfrage zu beschleunigen?
mfg
ich habe vor, meine Ordnersuche zu beschleunigen.
Selbige habe ich vor in etwa einem Jahr mit der Hilfe von Yaslaw erstellt.
Leider sind es mittlerweile ca. 5000 Dateien die im Höchstfall durchsucht werden müssen was halt dementsprechend lange dauert.
Hier mal der Code:
PHP:
$dira = './Masslisten';
if (isset($_POST['search_term']))
{
$search = $_POST['search_term'].".pdf";
//Alle Dateien in ein 2-Dimensionalen Array schreiben
$items = getDirContent($dira);
//Alle Dateien mit einem bestimmten Namen ausfiltern und in $result zurückgeben
$result = array();
foreach($items as $item){
if($item['name'] == $search){
$result[] = $item;
}
}
//Ausgabe:
include('./templates/suchealt/suchetopic.tpl');
foreach($result as $item){
$teile = explode("/", $item['path']);
include('./templates/suchealt/sucheerg.tpl');
}
include('./templates/suchealt/end.tpl');
}
/**
* Rekursive Funktion um alle Dateien eines Verzeichnises zu katalogisieren
* @param String $dir zu durchsuchendes Verzeichniss
* @return Array<Array<String>>
* @example Return-Value: array('name'=>'test.txt', 'path'=>'C:temp/test.txt')
*/
function getDirContent($dir){
$items = array();
if (is_dir($dir)) {
foreach(scandir($dir) as $file){
$path = createPath($dir, $file);
if(is_dir($path) && $file!='.' && $file!='..'){
$items = array_merge($items, getDirContent($path));
}elseif(is_file($path)){
$items[] = array('name' => $file, 'path' => $path);
}
}
}
return $items;
}
/**
* Aus meiner Funktionsbibliothek
* createPath: http://wiki.yaslaw.info/wikka/PhpCreatePath
*
* mpl by ERB software
* @author stefan.erb(at)erb-software.com
*/
/**
* @param Strings zusammenzusetzende Elemente
* @return String
* @example
* $path = createPath("C:\\temp\\", "test.txt");
* $path = createPath("C:", "temp", "test.txt")
*/
function createPath(){
$parts = func_get_args();
array_walk($parts, 'removeLastSeparator');
return str_replace("\\", "/", implode("/", $parts));
}
/**
* Hilfsfunktion um die nachgestelltenn / und \ von Pfadelementen zu entfernen
* Wird von createPath() verwendet
* @param $part
*/
function removeLastSeparator(&$part){
$part = preg_replace('/[\/\\\]*$/', '', $part);
}
Gibt es irgendeine Möglichkeit, diese Art der Abfrage zu beschleunigen?
mfg