So oder so ähnlich könnte eine Ausschrift während der Ausführung des Shell-Scripts zur Archivierung der Piwik-Reports aussehen. Dass „irgendein Speicher“ erschöpft ist, kann man der Meldung sicherlich problemlos entnehmen. Und auch, dass augenscheinlich nur ein paar Byte fehlen, um das PHP-Script erfolgreich auszuführen.
Das hierdurch entstehende Problem bei Piwik ist, dass für dieses Webprojekt dann keine Reports zur Verfügung stehen und es nur die Möglichkeit gibt, entweder das Archivierungs-Script erfolgreich abzuschließen oder wieder die Report-Erstellung auf „Browser“ umzustellen. Bei höheren Zugriffszahlen gehört dies allerdings nicht unbedingt zu der empfohlenen Alternative.
Diese Fehlermeldung wird immer dann angezeigt, wenn der RAM-Speicher, der einem PHP-Script zur Verfügung gestellt wurde, ausgeschöpft ist. Bei einer PHP-Seite im Web könnte man nun das memory_limit per htaccess-Datei erhöhen. Doch da hier die Ausführung auf der Linux-Shell erfolgt, wird das nicht weiter helfen. Es muss also die PHP-Konfiguration für die Kommandozeile angepasst werden.
Fehlermeldung bei der Piwik-Archivierung
... <result date="2011-03-28 to 2011-04-03">8181</result> <result date="2011-04-04 to 2011-04-10" /> </results> Archiving period = month for idsite = 68... Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 16 bytes) in /euer/pfad/zu/piwik/core/DataTable.php on line 432 Archiving period = year for idsite = 68... Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262255 bytes) in /euer/pfad/zu/piwik/core/DataTable.php on line 936 Archiving for idsite = 68 done!
Problembehebung
Wer Zugriff auf die Server-Einstellungen für PHP hat, z.B. auf einem vServer oder root-Server, kann den Wert einfach erhöhen.
Auf einem Debian-System liegt die anzupassende Datei unter /etc/php5/cli/php.ini und hier muss der Wert für memory_limit angehoben werden. Dieser steht eventuell bei 32 MB oder 64 MB. Verdoppelt diesen im ersten Schritt und startet den Apachen neu.
apache2ctl -t sudo /etc/init.d/apache2 force-reload su www-data -c "sh /euer/pfad/zu/piwik/misc/cron/archive.sh"
Sollte es keinen weiteren Fehler beim Ausführen des Scripts archive.sh geben, dann hat der PHP-Ausführungsspeicher ausgereicht. Falls nicht, dann heißt es erneut in der /etc/php5/cli/php.ini den memory_limit zu erhöhen. Auf meinem System habe ich den Wert auf 512 MegaByte angehoben.
Hallo,
bei mir ist der Fehler auch aufgetaucht. Da ich keinen Zugriff auf die php.ini hatte, bin ich wie folgt vorgegangen -> http://www.stadtklatsch.com/2012/06/04/piwik-fatal-error-out-of-memory-etc/
Vielleicht hilft es ja dem ein oder anderen weiter.
Viele Grüße, Sascha