Diese Hallo Leute,
hab eine funktion die einen verzeichnisbaum durchgeht und alle files mit denen aus einer datenbank vergleicht...
die mysql datenbank hat einen index auf das 'path' feld um das ganze zu beschleunigen.. (mit index: ~20 sekunden ausführungszeit bei 7000 files, ohne index ~ 4 minuten)
nun ists aber so, dass 20 sekunden irgendwie saulangsam sind
hätte einer von euch ne idee wie das hier zu optimieren wäre:
Vielen Dank für Eure Hilfe
grüße,
daniel
hab eine funktion die einen verzeichnisbaum durchgeht und alle files mit denen aus einer datenbank vergleicht...
die mysql datenbank hat einen index auf das 'path' feld um das ganze zu beschleunigen.. (mit index: ~20 sekunden ausführungszeit bei 7000 files, ohne index ~ 4 minuten)
nun ists aber so, dass 20 sekunden irgendwie saulangsam sind
hätte einer von euch ne idee wie das hier zu optimieren wäre:
PHP-Code:
function rekursiv_mediafiles($root)
{
global $inc_db_prefetch;
global $return;
global $inc_basedir;
chdir($root);
$folder = opendir($root);
while ($verz = readdir($folder))
{
if (is_dir($verz) && $verz != ".." && $verz != ".")
{
$path= $root;
rekursiv_mediafiles("$root/$verz");
chdir($root);
}
elseif(!is_dir($verz))
{
if (substr($verz, 0, 2)!="t_")
{
$element = str_replace("$inc_basedir","",$root);
$query_exsist = "SELECT path FROM ".$inc_db_prefetch."_media WHERE path = '$element/$verz'";
$query_exsist = mysql_query($query_exsist);
if (mysql_num_rows($query_exsist)=='0')
{
#$path= $root;
$path = str_replace("$inc_basedir","",$root);
$query= "SELECT id FROM ".$inc_db_prefetch_categories." WHERE path LIKE '$path'";
$query_parent_id = mysql_query($query);
if ($query_parent_id)
{
$parent_id = mysql_result($query_parent_id,0,id);
}
else
{
$parent_id="0";
}
$element = str_replace("$inc_basedir","",$path);
$query_insert = "INSERT INTO ".$inc_db_prefetch."_media (id,cat_id,path,caption) VALUES ('','$parent_id','$element/$verz','')";
$query_insert=mysql_query($query_insert);
$return .= "<b>$element/$verz</b> - added<br>";
}
else
{
$path= $root;
$query= "SELECT id FROM ".$inc_db_prefetch."_categories WHERE path = '$path'";
$query_parent_id = mysql_query($query);
if (mysql_num_rows($query_parent_id)>0)
{
$parent_id = mysql_result($query_parent_id,0,id);
}
else {
$parent_id="0";
}
$element = str_replace("$inc_basedir","",$path);
$query_update = mysql_query("UPDATE $inc_db_prefetch_media SET cat_id = '$parent_id' WHERE path = '$element/$verz'");
$return .= "<b>$element/$verz</b> - updated<br>";
}
}
}
}
closedir($folder);
return $return;
}
grüße,
daniel
Kommentar