Re: Questions regarding limits of processes launched by system, exec, passthru ...
| From: | Bastien Koert | Date: | Mon, 29 Sep 2008 00:30:30 +0000 |
| Subject: | Re: Questions regarding limits of processes launched by system, exec, passthru ... | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-281079@lists.php.net to get a copy of this message | ||
On Sat, Sep 27, 2008 at 12:50 PM, Richard Lynch <rlynch@peak6.com> 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@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
>
> --
> 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