Robert <[email protected]> (Fr 03 Feb 2012 12:54:09 CET):
> Moin Moin,  richtiges Pinguinwetter :D
> 
> 
> ich hab ein Problem. Auf meinem VServer läuft ein von der Console
> gestartetes PHP-script (CLI) das eine Zip (170mb) auspackt (ca 2000
> bilder)  und diese in ein Wordpress importiert ohne große Problme.
> Bei einem bekannten auf dessen Server (der dem beim Herrn
> Schlitterman gehört :D ) bricht das Script einfach ab. Der letzte
> Logeintrag liegt vor dem entZippen. Vermutlich passiert dann
> irgendetwas. Das Zip das der Bekannte verarbeitet ist etwas größer
> (400mb und entsprechend mehr Bilder). Der Speicherplatz reicht auf
> dem Server daran kanns nicht liegen. Aber gibt es Bedinungen bei
> denen ein PHP-CLI-CronJob vorzeitig aussteigt?

Du könntest natürlich auch den Script selber starten, über PHP und Dir
die Fehlermeldung in ein Logfile schreiben lassen.

(Stichwort Umleitung der Ausgabekanäle in der Shell.)

Ich habe das mal für Dich gemacht und die Ausrede ist, daß in Zeile 338

338:     fwrite($h,$zip->getFromIndex($i));

kein Speicher mehr alloziert werden kann.

    PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried
    to allocate 263908 bytes) in…

Das würdest Du auch sehen, wenn Du in dem Shell-Script, der vom Cron
aufgerufen wird und welcher seinerseits ja dann den erwähnten PHP-Script
startet (warum eigentlich muß das so umständlich sein?), die Ausgabe der 

    php …

Zeile umleitest.

Und ich frage mich, warum man ein 400+MB-Zip-File importieren muß und
ob man das nicht in kleineren machen kann. Muß das täglich passieren, dann
würde ich mich natürlich noch mehr fragen, ob das technisch sinnvoll und
notwendig ist, denn es ändert sich doch sicherlich nicht jeden Tag der
komplette Datenbestand, oder?

Das Grundübel scheint hier eine vermutlich in unserer PHP.ini verankerte
Einstellung zu sein, die die maximale RAM-Größe für den PHP-Prozess
festlegt.

Interessanterweise scheint diese Größe aber von mir nicht festgelegt
worden zu sein:

 # su -s /bin/sh <KUNDE> -c 'php --ini --info' | grep memory_limit
 memory_limit => -1 => -1
 suhosin.memory_limit => 0 => 0

Vielleicht macht Wordpress das irgendwo?
Und in der Tat, wenn ich mir die Files von WP anschaue, dann finde ich
auch etwas, was das Limit freundlicherweise auf 32MB setzt.

It's the pilot, not the aircraft.

-- 
Heiko

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an