RE: [PHP] Questions regarding limits of processes launched by system, exec, passthru ...
| From: | Richard Lynch | Date: | Sat, 27 Sep 2008 16:50:08 +0000 |
| Subject: | RE: [PHP] Questions regarding limits of processes launched by system, exec, passthru ... | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-281046@lists.php.net to get a copy of this message | ||
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@kinetix.gr]
Sent: Saturday, September 27, 2008 8:24 AM
To: valli@icsurselva.ch; php-general@lists.php.net
Subject: Re: [PHP] 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