phpbar.de logo

Mailinglisten-Archive

[php] Länger Scriptlaufzeit über Apache

[php] Länger Scriptlaufzeit über Apache

Kraft Bernhard kraftb at mokka.at
Mon Feb 21 11:15:59 CET 2005


Hallo Leute,

Ich hab ein kleines Problem.

Ich will den Gimp in der Kommandozeile für einige Grafikoperationen nutzen. Ich weiss das man sowas
auch mit ImageMagick machen kann aber es geht hier um das CMS Typo3 und das nutzt bereits Image Magick
und ich schreibe eine Extension die diese Art des image processing durch den Gimp ersetzt (Dieser hat
einige Funktionalitäten die ImageMagick nicht hat)

Das Problem ist folgendes. Wenn ich den Gimp von der Kommandozeile aus aufrufe natürlich als User des
Webservers nach einem "su - www-data":
time /usr/bin/gimp-2.0 --verbose -i -g /var/www/localhost/htdocs/kraftb/testing/typo3conf/ext/kb_gimpgfx/res/gimprc -b "(gimp-typo3-resize \"/var/www/localhost/htdocs/kraftb/testing/typo3/sysext/install/imgs/jesus2_transp.gif\" 0 \"/var/www/localhost/htdocs/kraftb/testing/typo3temp/temp/535cf1d2f24f81805b1c9475f1eac219.xcf\" 150 120)" "(gimp-quit 0)"

------------------snip----------------------
INIT: gimp_initialize
INIT: gimp_real_initialize
INIT: gimp_restore
INIT: gimp_real_restore
Starting extension: 'extension_script_fu'
batch command: executed successfully.
EXIT: gimp_exit
EXIT: gimp_real_exit
EXIT: batch_exit_after_callback

real    0m2.763s
user    0m2.001s
sys     0m0.465s
------------------snip----------------------

man sieht das es 2.763 sekunden in realzeit dauert bis das skript fertig ist ....


wenn ich nun folgendes php-script ausführe:
------------------------snip-----------------------
       $gimp_cmd = $this->gimpPath.((substr($this->gimpPath,-1, 1)==='/')?'':'/').$this->gimpExecutable.' --verbose -i -g '.$this->abs_gimprc.' -b "'.$gimp_str.'" "(gimp-quit 0)"';
       echo "gimp_cmd: '".$gimp_cmd."'<br>\n";
       $start = microtime();
       $start = $this->getMicrotime($start);
       $res = exec($gimp_cmd, $out);
       $stop = microtime();
       $stop = $this->getMicrotime($stop);
       $diff = $stop-$start;
       echo "Diff: $diff<br>\n";
       print_r($out);
------------------------snip-----------------------

bekomm ich folgenden output ...
---------------------------snip---------------------
gimp_cmd: '/usr/bin/gimp-2.0 --verbose -i -g /var/www/localhost/htdocs/kraftb/testing/typo3conf/ext/kb_gimpgfx/res/gimprc -b "(gimp-typo3-resize \"/var/www/localhost/htdocs/kraftb/testing/typo3/sysext/install/imgs/jesus2_transp.gif\" 0 \"/var/www/localhost/htdocs/kraftb/testing/typo3temp/temp/7d0e4bd02334d5678be2d96f3ae1d0ce.xcf\" 150 120)" "(gimp-quit 0)"'<br>
Diff: 15.5468091965<br>
Array
(
     [0] => INIT: gimp_load_config
     [1] => Parsing '/etc/gimp/2.0/gimprc'
     [2] => Parsing '/var/www/localhost/htdocs/kraftb/testing/typo3conf/ext/kb_gimpgfx/res/gimprc'
     [3] => INIT: gimp_initialize
     [4] => INIT: gimp_real_initialize
     [5] => INIT: gimp_restore
     [6] => INIT: gimp_real_restore
     [7] => Starting extension: 'extension_script_fu'
     [8] => batch command: executed successfully.
     [9] => EXIT: gimp_exit
     [10] => EXIT: gimp_real_exit
     [11] => EXIT: batch_exit_after_callback
)
---------------------------snip---------------------

also ein diff von 15.54 Sekunden ...

das bedeudet das der gimp über den apache gestartet wesentlich länger läuft ...

hat wer eine idee warum und wie ich ihn zu einer "normalen" laufzeit begewegen kann ?

Ich hatte schon die vermutung das der gimp über den apache gestartet vielleicht alles plugins
lädt ... aber das würde dann im output angezeigt werde ... wird es aber nicht ... also denk
ich das ist es nicht (obwohl er ja vielleicht diese ausgaben auf stderr machen könnte ... dann
seh ich sie so nicht denk ich (oder zeigt exec auch stderr an?))


greets,
Bernhard

php::bar PHP Wiki   -   Listenarchive