php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.07.2005, 16:55  
Gast
 
Beiträge: n/a
Standard [Erledigt] Fatal error: Allowed memory size...

Warum erzeugt dieser Code diesen Fehler?

Ich bekomme ein Array geliefert, und in einem Key (hier: title) ist ein Text gespeichert, der maximal 20 Zeichen lang sein soll.

Code:
$reports = $this->r->getAllReports(false);
for($i = 0; $i <= count($reports); $i++) {
   $reports[$i]['title'] = substr($reports[$i]['title'], 0, 20);
}
Das liefert mir diesen Fehler:

Fatal error: Allowed memory size of 10485760 bytes exhausted (tried to allocate 41 bytes) in /raid/domains/de/j/judoimtv/htdocs/test/Modules/Reports/OverviewAction.php on line 10

Fatal error: Allowed memory size of 10485760 bytes exhausted (tried to allocate 136 bytes) in Unknown on line 0


Vielleicht ist es ja nur Unkenntnis meinerseits, oder einfach große Dummheit Ich hoffe ihr könnt mir helfen.
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.07.2005, 17:38  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Da bist Du ans Memory-Limit gestossen.
Abhilfe schafft es, dieses zu erhöhen (vorrausgesetzt, der Server ist dir), oder weniger Speicher zu verbrauchen.

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten..
... der Tatsache, dass die Suchfunktion (und google) auch was feines ist.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq ist offline  
Alt 06.07.2005, 17:46  
Gast
 
Beiträge: n/a
Standard

Das mit dem Speicher ist schon kalr. Der Fehler kommt aber nur wenn ich diese drei Zeielen verwende. Also muss an denen doch irgendwas falsch oder unsauber gelöst sein. Oder irre ich mich da?
 
Alt 06.07.2005, 18:22  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von timop
Der Fehler kommt aber nur wenn ich diese drei Zeielen verwende. Also muss an denen doch irgendwas falsch oder unsauber gelöst sein. Oder irre ich mich da?
Nein, Dur irrst Dich ganz nicht. Da hier aber kein Aas weiß, welche wüsten Arrays Du im RAM umgräbst, der default magere 8MB dick ist, solltest Du mal zum Hellseher gehen.

btw: verwendest Du PHP/FI, PHP3, PHP4, PHP5 oder was auch immer?
 
Alt 07.07.2005, 09:00  
Gast
 
Beiträge: n/a
Standard

Mein Array sieht so aus:
$reports[0]['id'] = ...
$reports[0]['title'] = ...
$reports[0]['report'] = ...
$reports[0]['author'] = ...
$reports[0]['time'] = ...
$reports[0]['clicks'] = ...
$reports[1]['id'] = ...
$reports[1]['title'] = ...
$reports[1]['report'] = ...
$reports[1]['author'] = ...
$reports[1]['time'] = ...
$reports[1]['clicks'] = ...
...

und ich verwende PHP4


Also so wüst finde ich das Array nicht, ganz im Gegenteil
 
Alt 07.07.2005, 13:01  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

der zu hohe speicherverbrauch kann allerdings auch woanders liegen - d.h. du verbrauchst in datei foo.php 7.7 MB, der abbruch kommt aber in datei bar.php - wo du in den überlauf kommst, weil du dort 0.3 MB brauchst.
nur das mit dem getAllReports ist so 'ne sache - warum verwendest du die methode, wenn du nach dem auslesen nochmal nachbessern musst?

es sollte möglich sein, getAllReports() mit einem zusätzlichen parameter dazu zu bewegen, das 'title'-attribut korrekt zurückzugeben, um die for-schleife überflüssig zu machen.

mysql kann übrigens auch SUBSTRING() - damit kannst du das substr() der datenbank überlassen und sparst einiges an speicher.


übrigens:

PHP-Code:

function _numCounts($increment false) {
 static 
$i 0;
  if(
$increment$i++;
  return 
$i;
 }

function 
_count($arr) {
  
_numCounts(true);
  return 
count($arr);
}

$arr range(1000);

// scheißmethode
for($i=0;$i<_count($arr);$i++){
 
// bla
}

var_dump(_numCounts());

// gute methode:

for($i=0,$m=_count($arr);$i<$m;$i++){
   
// bla
}

var_dump(_numCounts()); 
axo ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] preg_replace Fatal Error I-Spy PHP Tipps 2006 7 04.06.2006 20:53
Memory exhausted PHP Tipps 2005-2 2 29.08.2005 19:47
Allowed Memory Size exhausted bicpi PHP-Fortgeschrittene 16 20.04.2005 00:28
different size in shared object, consider re-linking!? Heart Datenbanken 1 09.03.2005 15:42
Fatal error: Allowed memory size of 8192 bytes exhausted at PHP Tipps 2005 11 06.03.2005 19:26
Fatal error: Call to undefined function: imagecreatefromjpeg DannyD PHP-Fortgeschrittene 10 05.12.2004 21:59
[Erledigt] imagecreatetruecolor memory size PHP-Fortgeschrittene 2 10.09.2004 17:52
Fatal error: Allowed memory size of PHP Tipps 2004 4 04.09.2004 17:50
[Erledigt] Memory Problem mit gd PHP-Fortgeschrittene 1 25.06.2004 18:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php var_dump auf objekt memory limit problem, php createimagefromjpeg fatal error: allowed memory size of 10485760 bytes exhausted, php5 memory abbruch, allowed memory size of bytes exhausted n, php str_replace memory, memory size php5, php allowed memory size objekt, str_replace fatal error: allowed memory size, php imagecreatefromjpeg error size allocated

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.