Re: Questions regarding limits of processes launched by system, exec, passthru ...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux