Re: Questions regarding limits of processes launched by system, exec,passthru ...
| From: | Valentin Schmid - ICSurselva AG | Date: | Mon, 29 Sep 2008 07:56:08 +0000 |
| Subject: | Re: Questions regarding limits of processes launched by system, exec,passthru ... | ||
| References: | 1 | Groups: | php.install |
| Request: | Send a blank email to php-install+get-19439@lists.php.net to get a copy of this message | ||
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.htmlor 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>