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

[email protected] (Valentin Schmid - ICSurselva AG)
Newsgroups php.install
Message-ID <[email protected]>
Hello all again,

It seems that Problem can only be solved by one of the following ways:

1. Don't use mod_php; use CGI or FastCGI instead. Then it would be
    possible to limit the resources via RLimitCPU / RLimitMEM.

2. Use one of the following apache core patch
     http://archives.neohapsis.com/archives/openbsd/2005-12/1436.html
    or the following apache module:
     http://www.ucc.asn.au/~dagobah/things/mod_rlimit.c
    (Unfortunately only for apache 1.3)

Thanks for all your answers.

Kind regards
valli

> 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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.