Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Fehlermeldung [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Fehlermeldung


 
nightview
29-01-2004, 16:25 
 
Hallo alle zusammen


Hab ein kleines problem

ich soll eine tabelle aus einer DB auslesen die insgesamt 80 mb groß ist.

mun bekomme ich immer die Fehlermeldung:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 126 bytes) in /www/user/web8282/html/db/auslesen.php on line 58;


keine ahnung woran das liegt.
hier der Quellcode:

$sql_auslesen = "SELECT * FROM $tbl" ;

$query_auslesen = mysql_query($sql_auslesen);

$anz = mysql_num_rows($query_auslesen);

$erg = $anz / 40000;

$lauf = round($erg) + 1;

for($i=0;$i<=$lauf;$i=$i+1){

$j = $j + 40000;

If($j > $anz){

$j = $anz;
}

$sql_auslesen1 = "SELECT * FROM $tbl WHERE id >= $k AND id <= $j";

$query_auslesen1 = mysql_query($sql_auslesen1);

while($auslesen = mysql_fetch_array($query_auslesen1)){

$daten .= $auslesen['id'] .";". $auslesen['webadresse'] .";" .$auslesen ['webreferer'] .";". $auslesen['webtime'] .";". $auslesen['webip'] .";". $auslesen['provider'] .";". $auslesen['system'] .";\n";

}

mysql_free_result($query_auslesen1);

$datei =fopen($path ."Daten_$i.csv","a+");
fwrite($datei,$daten );

$k = $j + 1;

}


der connect zu db steht.

Hoffe es kann mir einer helfen

Danke schon mal

 
kill_bill
29-01-2004, 16:32 
 
scheint mir, als wäre die maximal erlaubte von php ausführbare dateigröße 8 mbyte, bedeutet änderungen in der php.ini ...

 
Abraxax
29-01-2004, 18:06 
 
check mal deine schleifen... ;)


und verwende die php-tags im forum! :teach:

 
nightview
31-01-2004, 12:52 
 
Was soll den mit der schleife sein ?


únd das mit den tags wußte ich nicht, sorry werde es das nachste mal
besser machen

 
Offe1
31-01-2004, 13:13 
 
$datei =fopen($path ."berufsmarkt_stats_$i.csv","a+");
fwrite($datei,$daten );



gehört hinter die for-Schleife oder
$daten = statt $daten .=

Schreib mal für
$lauf = 5;
vor die for-Schleife (vielleicht ist $lauf so groß, daß "Allowed memory" überschritten wird)

sonst
echo "I=$i<br>";
flush();
nach der for-Schleife.

Offe

 
Abraxax
31-01-2004, 13:19 
 
Original geschrieben von nightview
únd das mit den tags wußte ich nicht, sorry werde es das nachste mal
besser machen du darfst auch deinen ersten post editieren und die tags einfügen.

 
nightview
02-02-2004, 10:22 
 
Also das mit $daten .= stimmt, da pro while 40000 datensätze eingelesen werden. da er das so lange m,achens oll bis die tabelle ausgelesen ist, muß es auch in die For schleife, sonst müsste ich es ja immer wieder neu ausfüren.

das script würde ja auch so laufen, wenn da nicht die sachen mit dem speicher wäre, der mir nur 8MB erlaubt. kann ich das auf irgendeine war tund weise umgehen? oder kann ich den server auf irgendeine art austricksen. z.B. das sich das script immer wieder selber ausführt, bis die daten alle ausgelesen sind?

weiß echt nicht mehr weiter

danke für die hilfe


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:54 Uhr.