On Sat, Sep 27, 2008 at 12:50 PM, Richard Lynch <rlynch@xxxxxxxxx> wrote: > memory_limit and time_limit are implemented down in the guts of the PHP > interpreter; They are not magic. > > They can't do diddly when PHP is running some other binary... > ________________________________________ > From: Thodoris [tgol@xxxxxxxxxx] > Sent: Saturday, September 27, 2008 8:24 AM > To: valli@xxxxxxxxxxxxx; php-general@xxxxxxxxxxxxx > Subject: Re: Questions regarding limits of processes launched by > system, exec, passthru ... > > > Hello all, > > > > Is there a way to limit the memory consumption and / or the CPU > > consumption of processes launched by the php functions system, > > exec, passthru, proc_open and shell_exec? > > > > We use mod_php with an apache (mpm-prefork) on Linux. > > > > The following settings don't have any effect at all: > > PHP: > > max_execution_time 30 > > memory_limit 8M > > Apache: > > RLimitCPU 30 30 > > RLimitMEM 8388608 8388608 > > > > The limits above do have effect on php-scripts (without system calls) > > and on CGIs (as well on processes launched by CGIs). > > > > Any Ideas? > > > > Kind Regards > > valli > > > > > > PS: I tested it with the following two scripts: > > system_memorytest.php > > ===================== > > <html> > > <head> > > <title>php-systemcall-memory test</title> > > </head> > > <body> > > php-systemcall-memory test<br> > > ... and here's the system call:<br> > > <pre> > > <?php > > $cmd = '/usr/bin/perl -e \' > > $| = 1; > > print "start of the systemcall<br>\n"; > > $s = "teststr_"; > > while (1) { > > print "len=".length($s)."<br>\n"; > > sleep(1); > > $s .= $s; > > } > > \''; > > print htmlspecialchars($cmd); > > ?> > > </pre> > > <?php > > ob_flush(); > > flush(); > > system($cmd); > > ?> > > </body> > > </html> > > > > > > system_timeouttest.php > > ====================== > > <html> > > <head> > > <title>php-systemcall-timeout test</title> > > </head> > > <body> > > php-systemcall-timeout test<br> > > ... and here's the system call:<br> > > <pre> > > <?php > > $cmd = '/usr/bin/perl -e \' > > $| = 1; > > print "start of the systemcall<br>\n"; > > $i = 0; > > while (1) { > > if (($i % 10000000) == 0) { > > print "i=".$i."<br>\n"; > > } > > $i += 1; > > } > > \''; > > print htmlspecialchars($cmd); > > ?> > > </pre> > > <?php > > ob_flush(); > > flush(); > > system($cmd); > > ?> > > </body> > > </html> > > > > > > > > > > > > Well as far as I know there are already memory limits to every php > process and you define this in php.ini. I recently made a script that > used to exhaust all the given memory and I needed to increase the limit. > > memory_limit = 16M > > You can change this to whatever you wish to control. You can also > change these if you want to control execution time: > > max_execution_time = 30 ; Maximum execution time of each script, in > seconds > max_input_time = 60 ; Maximum amount of time each script may spend > parsing request data > > > I haven't seen a way to control disk access space but I guess there are > two ways to do that. One is quota the space that php writes in or do > this by the programming way (meaning that you may check the space before > you write something). > > As for the CPU I think there are OS specific techniques to control > resource usage in general but it depends on what *nix system you use > (FreeBSD, Linux etc). > > > ------------ > Thodoris > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > > _______________________________________________________ > > The information in this email or in any file attached > hereto is intended only for the personal and confiden- > tial use of the individual or entity to which it is > addressed and may contain information that is propri- > etary and confidential. If you are not the intended > recipient of this message you are hereby notified that > any review, dissemination, distribution or copying of > this message is strictly prohibited. This communica- > tion is for information purposes only and should not > be regarded as an offer to sell or as a solicitation > of an offer to buy any financial product. Email trans- > mission cannot be guaranteed to be secure or error- > free. P6070214 > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > Assuming a linux hosted server, see about getting a user created with ulimit (which limits the resources on calls to system) if you can use that user -- Bastien Cat, the other other white meat