Hallo Allerseits
sitze schon seit einiger zeit  an einem Script fest welcher den Inhalt von mehreren Datenbanken(über Joins) ausliest und diese in eine txt speichert, das auslesen und speichert klappt aber das Problem liegt in der Performance, 
es dauert viel zu Lange bis die txt datei gefüllt, besipw am anfang ist die 1kb groß bleibt 20bis30sec. so und dann ist se 66Kb wächst  also sehr laaangsam t und ist auserdem noch ziemlich Ressourcenfressend denn wen der Scrript läuft wird der Pc aufeinmal ganz lahm. Also hab schon recht alles versucht, mich auf Variablen begrenzt die ich auch wirklich brauche doppelte " gegen einfache ' ersetzt, Variablen am Ende auf null setzen. Ich muss dazu hinzufügen es ist eine ganz schöne menge an Daten die bewegt wird. ich glaub so um die 19k DB-Einträgen
Anfangs wollte ich ja Stumpf die ganze DB runterziehen aber das war noch schlimmer als jetzt hat aber noch weniger sinn gemacht war viel zu Langsam und Ressourcenfressender als jetzt.
Den jetzt versuche ich die Daten häppchenweise rauszuziehen. Klappr bischen besser aber auch nur n bissle:
Vieleicht fällt euch was ein was ich besser machen könnte, also ich bin da echt Überfragt.
<?php
$minLimit = 0;
$file = 'test.txt';
if(file_exists($file)){
	unlink($file);
}
$fp = fopen('test.txt', 'a+');
$csv_head = array('aid', 'brand','mpnr', 'ean','name', 'desc', 'shop_cat', 'price', 'ppu', 'link', 'image', 'dlv_time', 'dlv_cost', 'pzn');
$csv_file[0]   = implode('|', $csv_head);
fputs($fp, $csv_file[0]);
fwrite($fp, "\n");
$i=0;
$select2 = 'SELECT SQL_CALC_FOUND_ROWS
		   d.html_osc,
		   d.artikel_id,
		   b.xxx,
		   b.aufschlag,
		   b.sonderlieferzeit,
		   b.lieferzeit,
		   a.rec_id as id,
		   a.shop_artikel_id,
		   a.matchcode,
		   a.artnum,
		   a.kurzname,
		   a.menge_akt,
		   a.shop_image,
		   a.vk5
		   FROM testcao.artikel a
		   LEFT JOIN fuchsweb.lieferzeiten b ON b.cao_id = a.rec_id
		   LEFT JOIN testcao.artikel_to_kat c ON c.artikel_id = a.rec_id
		   LEFT JOIN fuchsweb.z_artikel_grund d ON d.artikel_id = a.rec_id
		   WHERE d.html_osc IS NOT NULL
		   GROUP BY a.rec_id';
$queryLc = mysql_query($select2) or die (mysql_error().__LINE__);
$limit = mysql_num_rows($queryLc);
$select3 = mysql_query('SELECT FOUND_ROWS() AS ende');
$que     = mysql_fetch_array($select3);
$ende    = $que['ende'];
$repeat  = ceil($que[0]/100); // Durch 100 weil 100 Datensätze pro lauf geschrieben werden.
for($c=0; $c<=$repeat;$c++){
	#$minLimit = $minLimit+100;
	if($minLimit>$ende) continue;
	$select = 'SELECT
		   d.html_osc,
		   d.artikel_id,
		   b.xxx,
		   b.aufschlag,
		   b.sonderlieferzeit,
		   b.lieferzeit,
		   a.rec_id as id,
		   a.shop_artikel_id,
		   a.matchcode,
		   a.artnum,
		   a.kurzname,
		   a.menge_akt,
		   a.shop_image,
		   a.vk5
		   FROM testcao.artikel a
		   LEFT JOIN fuchsweb.lieferzeiten b ON b.cao_id = a.rec_id
		   LEFT JOIN testcao.artikel_to_kat c ON c.artikel_id = a.rec_id
		   LEFT JOIN fuchsweb.z_artikel_grund d ON d.artikel_id = a.rec_id
		   WHERE d.html_osc IS NOT NULL
		   GROUP BY a.rec_id LIMIT '.$minLimit.',100';	   
	$query = mysql_query($select) or die (mysql_error());
	while ($row = mysql_fetch_object($query)){
		$artid      = $row->id;
		$desc 		= $row->html_osc;
		$xxx  		= $row->xxx;
		$aufschlag  = $row->aufschlag;
		$lief       = $row->sonderlieferzeit;
		$liefzeit   = $row->lieferzeit;
		$shop_id    = $row->shop_artikel_id;
		$kurzname   = $row->kurzname;
		$name       = $row->matchcode;
		$artikelNr  = $row->artnum;
		$mengeAkt   = $row->menge_akt;
		$image      = $row->shop_image;
		$preis      = $row->vk5;
		$i++;
		if($mengeAkt > 0 )
		{
			$liefer = 1;
			$day = ' Tag';
		}
		if($mengeAkt < 1)
		{
			$liefer = $liefzeit+1;
			if ($lief < 1) {
				$lief = $lief+1;
			}
			$day = ' Tage';
		}
		if($xxx == 'Y')
		{
			$liefer = $lief+1;
			if($lief > 1)
			{
				$liefer = $liefzeit+1;
				$day = ' Tage';
			}
		}
		$selectKat = 'SELECT artk.kat_id, ak.name AS kat1, ak2.name AS kat2, ak3.name AS kat3, ak4.name AS kat4 FROM testcao.artikel_to_kat artk
    		    LEFT  JOIN testcao.artikel_kat ak  ON ak.id  = artk.kat_id
    		    LEFT  JOIN testcao.artikel_kat ak2 ON ak2.id = ak.top_id
    		    LEFT  JOIN testcao.artikel_kat ak3 ON ak3.id = ak2.top_id
    		    LEFT  JOIN testcao.artikel_kat ak4 ON ak4.id = ak3.top_id
    		    WHERE artk.artikel_id = ' . $artid;
		$queryKat = mysql_query($selectKat) or die (mysql_error());
		$rowKat   = mysql_fetch_object($queryKat);
		$katId    = $rowKat->artikel_id;
		$name1    = $rowKat->kat1;
		$name2    = $rowKat->kat2;
		$name3    = $rowKat->kat3;
		$name4    = $rowKat->kat4;
		$kat      = '';
		if($name4)
		$kat .= 'Start >'. $name4 ;
		else
		$kat .= 'Start ';
		if($name3)
		$kat .= '> '.$name3 ;
		if ($name2)
		$kat .= '> '.$name2;
		if($name1)
		$kat .= '> '.$name1;
		$deeplink 	  = '...'.$shop_id;
		$imaglink 	  = '...'.$image;
		$lieferkosten = '...';
		$entry = array($artikelNr, ' ', ' ', ' ',$kurzname, $sql->cleanDesc($desc), $kat, $preis, ' ' , $deeplink, $imaglink, $liefer.$day, $lieferkosten, ' ');
		$csv_body[$i] = implode('|', $entry);
		fwrite($fp, $csv_body[$i]);
		fwrite($fp, "\n");
		$artid        = '';
		$desc 		  = '';
		$xxx  		  = '';
		$aufschlag    = '';
		$lief         = '';
		$liefzeit     = '';
		$shop_id      = '';
		$kurzname     = '';
		$name         = '';
		$artikelNr    = '';
		$mengeAkt     = '';
		$image        = '';
		$preis        = '';
		$kat          = '';
		$entry        = '';
		$name1        = '';
		$name2        = '';
		$name3        = '';
		$name4        = '';
		$deeplink 	  = '';
		$imaglink 	  = '';
		$lieferkosten = '';
		$entry        = '';
		$csv_body     = array();
	}
        $minLimit = $minLimit+100;
	mysql_free_result($query);
	mysql_free_result($queryKat);
}
fclose($fp);
?>
bin für jeden tipp dankbar
 
		 
		
		
	