php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #49859 PHP_FCGI_CHILDREN not work
Submitted: 2009-10-13 08:00 UTC Modified: 2009-10-19 14:40 UTC
From: loki5100-nospam at yahoo dot fr Assigned:
Status: Not a bug Package: PHP options/info functions
PHP Version: 5.3.0 OS: Windows Vista
Private report: No CVE-ID:
 [2009-10-13 08:00 UTC] loki5100-nospam at yahoo dot fr
Description:
------------
i found a bug in PHP-cgi.exe

I use Php-cgi as fastCgi

php-cgi.exe -b host:port

i set in environement variables this :

PHP_FCGI_CHILDREN=8
PHP_FCGI_MAX_REQUESTS=1000

in the task manager i see only one  Php-cgi.exe
process (when normaly i must see 9 process no?)
and after i send more than 1000 request the
php-cgi.exe process died ! and i must manually
restart it! that not a normal behavior when 
PHP_FCGI_CHILDREN is > 1

Reproduce code:
---------------
set in environement variables :
PHP_FCGI_CHILDREN=8
PHP_FCGI_MAX_REQUESTS=1000

exec: php-cgi.exe -b 127.0.0.1:9000

see in task manager only one Php-cgi.exe process

send more than 1000 request to php-cgi.exe, the process will die and you will need to manually restart it ! 




Expected result:
----------------
process must be restarted automatiquely

Actual result:
--------------
the main process die and you need to manually restart it ! 


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-10-19 14:40 UTC] jani@php.net
You have just set the environment variables in wrong place / wrong way. (no idea how you do that in windows, but this works just fine under *nix) 
 [2012-04-04 12:12 UTC] strayer at olle-orks dot org
I just discovered this while checking out xcache and this really doesn't work... 
phpinfo() even shows the env var in its output!

cmd:
# set PHP_FCGI_CHILDREN=5
# set PHP_FCGI_MAX_REQUESTS=3
# php-cgi -b 127.0.0.1:9000

Process Explorer shows only one process with one thread.

Ran phpinfo() via browser:

Environment
PHP_FCGI_CHILDREN	5
PHP_FCGI_MAX_REQUESTS	3

It looks like php-cgi just ignores the PHP_FCGI_CHILDREN, since 
PHP_FCGI_MAX_REQUESTS seems to be working as intended.
 [2012-08-03 18:34 UTC] zyss at mail dot zp dot ua
I have the same problem. We're using PHP with windows embedded.

PHP just ignores this environment variable (PHP_FCGI_CHILDREN).

Please reopen this bug.
 [2012-08-23 19:38 UTC] matheus at gigatron dot com dot br
The problem is that the PHP_FCGI_CHILDREN environment variable is ignored under windows, therefore php-cgi does not spawn children, and when PHP_FCGI_MAX_REQUESTS is reached the process terminates.

Check on PHP's source, file cgi_main.c, around line 1982:

#ifndef PHP_WIN32
  /* Pre-fork, if required */
  if (getenv("PHP_FCGI_CHILDREN")) {
    char * children_str = getenv("PHP_FCGI_CHILDREN");
...

So, php with fast-cgi will **never** work on Windows.

The question is, why is forking disabled under windows?
 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Wed Apr 16 04:02:11 2014 UTC