Edit report at https://bugs.php.net/bug.php?id=55221&edit=1

 ID:                 55221
 Updated by:         ras...@php.net
 Reported by:        osmanungur at gmail dot com
 Summary:            shell_exec works very slow with Apache
-Status:             Open
+Status:             Bogus
 Type:               Bug
 Package:            Performance problem
 Operating System:   Mac OS X 10.6.8
 PHP Version:        5.3.6
 Block user comment: N
 Private report:     N

 New Comment:

There really isn't anything we can do about that. When you run something from 
the 
command line your shell is already running and ready to go. When you do it from 
within PHP via any of those calls you need to fork and then exec the shell 
executable first and then run the command. That is a huge amount of overhead, 
especially if you are low on ram. To avoid the fork+exec overhead you should 
use 
some sort of pre-forking mechanism and simply pass messages to the already 
running job worker. You can roll your own, but I would suggest looking at 
something like Gearman instead.


Previous Comments:
------------------------------------------------------------------------
[2011-07-17 12:56:31] osmanungur at gmail dot com

Description:
------------
Running commands with shell_exec in browser is working very slower than CLI. 
I'm 
having same problem with system() and proc_open(). 

Running from shell takes 0.11 sec, but running from browser takes 16.96 second. 
I tested out same code in Linux Ubuntu, same problem happens. 

CLI
------------

float(0.11125087738037)
string(211) "graph_left = 67
graph_top = 33
graph_width = 800
graph_height = 200
image_width = 882
image_height = 273
graph_start = 1310835249
graph_end = 1310921349
value_min = 0.0000000000e+00
value_max = 1.1000000000e+00
"

Browser / Apache
------------

float 16.960417032242
string 'graph_left = 67
graph_top = 33
graph_width = 800
graph_height = 200
image_width = 882
image_height = 273
graph_start = 1310834364
graph_end = 1310920464
value_min = 0.0000000000e+00
value_max = 1.1000000000e+00
' (length=211)

Test script:
---------------
<?php

$start = microtime(1);
$output = shell_exec($executor->getCommandString());
$end = microtime(1);
var_dump($end - $start, $output);



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=55221&edit=1

Reply via email to