Hallo, seit 3.5.6 (komplette Neuinstallation) habe ich ein Problem mit der Speichernutzung. Nachdem der Shopware-Cache komplett geleert wird, taucht an manchen Stellen folgende Fehlermeldung auf: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 1966080 bytes) in /usr/local/serv/www/shopware/data/engine/Enlight/Vendor/Zend/library/Zend/Date.php on line 2414
PHP wurden 256MB Speicher als memory_limit zugewiesen. Auch im Backend in der phpinfo sind jeweils 256MB als memory_limit angegeben. Shopware erkennt diese 256MB auch korrekt unter Einstellungen > SystemInfo > Serverkonfiguration. An den Shopwaredateien selbst wurde keine Änderung vorgenommen. Um wirklich alle Eventualitäten auszuschließen, habe ich im Webroot eine Datei mit folgendem Skript eingestellt, dass den Speicher testet: function tryAlloc($megabyte){ echo "try allocating {$megabyte} megabyte...\n"; $dummy = str\_repeat("-",1048576\*$megabyte); echo "pass.\n"; echo "\nUsage: " . memory\_get\_usage(true)/1048576; echo "\nPeak: " . memory\_get\_peak\_usage(true)/1048576; echo "\n"; } for($i=10;$i\<1000;$i+=50){ $limit = $i.'M'; echo "set memory\_limit to {$limit}\n"; ini\_set('memory\_limit', $limit); echo "memory limit is ". ini\_get("memory\_limit")."\n"; tryAlloc($i-10); } tryAlloc(300);
Ergebnis: Bis 250 MB kann Speicher zugewiesen werden. Danach bricht das Skript verständlicherweise ab. Wo liegt der Fehler? EDIT: Verwendet wird PHP Version 5.3.3-7+squeeze8 & IcoCubeloader
Mein Fehler: In der VHOST war der SSL auf 32 MB begrenzt - daher ist der Fehler nur sporadisch aufgetreten (eben nur bei SSL-Verschlüsselung) und wurde im Backend auch nicht angezeigt. Ohne SSL war alles okay. Das Problem dürfte selten vorkommen, aber vielleicht wäre hier ein Hinweis im Backend empfehlenswert (bei den Anforderungen). Bei der Suche durch Shopware sind mir zwei Tippfehler aufgefallen: engine\core\class\sRewriteTable.php engine\Shopware\Plugins\Default\Frontend\CronRefresh\Bootstrap.php steht jeweils @ini_set(“memory_limt”,“265M”); statt memory_limit Vielleicht könnte das ja im nächsten Release angepasst werden - auch wenn dies sicherlich keine Probleme verursacht.