Re: Bug #10744: session_start() "serializes" exec
| From: | Oleg Makarenko | Date: | Thu, 10 May 2001 15:15:21 +0000 |
| Subject: | Re: Bug #10744: session_start() "serializes" exec | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-54657@lists.php.net to get a copy of this message | ||
> Try this in a script:
> <?php
> exec( "/bin/sleep 30 >/dev/null 2>&1 </dev/null &" ) ;
> echo "Done !!" ;
> ?>
>
> Now call it from the browser several time (Reload button). If you type a ps ax command you will
> see several "sleep 30" processes. Wait all the processes to stop.
>
> Now put session_start() as the first line. Press RELOAD: it completes OK. Now press RELOAD
> again: it hangs !!! It waits for the sleep to terminate before starting the next !! So if you press
> RELOAD 10 times you need to wait 300 seconds !!
>
> Is it a normal behaviour ? How can I have a process completely in the background ?
That is by design (for file based session storage at least).
See http://www.php.net/bugs.php?id=6287&edit=1
and
http://bugs.php.net/?id=10675&edit=1
All access to session variables in PHP4 is serialized. If you want to
start some daemon from inside your php script make it to close all
unused file handles at startup or close the session before exec().
oleg