memory size problem

  • Themenstarter Themenstarter kalle123456
  • Beginndatum Beginndatum
Vielleicht sind die 10 MB nur der Tropfen der das Faß zum überlaufen bringt....

Versuch mal

PHP:
ini_set ( 'memory_limit','50M ');

solange zu erhöhen bis er nicht mehr meckert.

Dann Fixe Deinen code so, das er im limit bleibt.

Ist da vielleicht eine While schleife drin die die Datei mehrfach lädt und so den Überlauf verursacht? Weil bei 5MB Attachement solltest du ja mit der Standard Einstellung von 8MB schon hinkommen.

Also finde heraus wieviel er braucht und dann warum er soviel braucht.
 
Versuch mal

PHP:
ini_set ( 'memory_limit','50M ');

solange zu erhöhen bis er nicht mehr meckert.

Hatte vorher in einen anderen script das limit zur laufzeit geändert(konnte mich nicht mehr daran errinnern...), sorry :). trotzdem ist die Fehlermeldung echt hart ;).

Danke an alle

P.S. also es geht jetzt, kleiner Zusatz: bei der Verwendung von imap_base64 sollte man mindestens das dreifache des benötigten Speichers einplanen.
 
Zuletzt bearbeitet von einem Moderator:
Wenn du es schaffst, die Daten in einer Datei zu speichern, könntest du folgende Funktion nutzen:
PHP:
function file_base64_decode($srcFile, $dstFile=null)
{
	$srcHandler = fopen($srcFile, 'r');
	if (is_null($dstFile)) {
		$dstHandler = tmpfile();
	} else {
		$dstHandler = fopen($dstFile, 'w');
	}
	$buffer = '';
	// read base64 data in 768 byte chunks resulting in 576 byte output
	while ($data = fread($srcHandler, 768)) {
		// remove CR and LF characters
		$data = $buffer.str_replace(array("\r", "\n"), '', $data);
		// estimate split position as only each 4 byte sequence can be converted into 3 byte output
		$splitPos = floor(strlen($data)/4)*4;
		// store overhead in buffer for next round
		$buffer = (string) substr($data, $splitPos);
		$data = substr($data, 0, $splitPos);
		fwrite($dstHandler, base64_decode($data));
	}
	if ($buffer != '') {
		fwrite($dstHandler, base64_decode($data));
	}
	// if source should be overwritten, write data from temp file to source file
	if (is_null($dstFile)) {
		$dstFile = $srcFile;
		fclose($srcHandler);
		$srcHandler = $dstHandler;
		rewind($srcHandler);
		$dstHandler = fopen($srcFile, 'w');
		while ($data = fread($srcHandler, 1024)) {
			fwrite($dstHandler, $data);
		}
	}
	fclose($srcHandler);
	fclose($dstHandler);
	return filesize($dstFile);
}
 
Hi,

der Parameter heißt "memory_limit". phpinfo() verrät Dir, wo Deine php.ini liegt.
Du kannst den Wert aber auch zur Laufzeit im Skript verändern, einfach den Thread nochmal lesen.

LG
 
ohh ok.. dann funktioniert bei mir was nicht... bekomme naemlich den gleichen fehler und habe auch schon in der .php das memory limit mit:

PHP:
ini_set('memory_limi', '50M');

erhoet...
 
Zurück