On 09/10/2010 11:13 AM, J Ravi Menon wrote: > Hi, > > I have some basic questions on running php (5.2.x series on Linux > 2.6) as a standalone daemon using posix methods (fork() etc..): > > #!/usr/bin/php > <?php > > require_once ('someclass.php'); > > // do some initializations > . > > // main 'forever' loop - the '$shutdown' will > // be set to true via a signal handler > > while(!$shutdown) > { > $a = new SomeClass(); > > $a->doSomething() > > } > > // shutdown logic. > > The 'someclass.php' in turn will include other files (via require_once). > > The above file will be executed directly from the shell. The main loop > could be listening to new requests via sockets etc.. > > Few questions: > > 1) Does opcode cache really matter in such cli-based daemons? As > 'SomeClass' is instantiated at every loop, I am assuming it is only > compiled once as it has already been 'seen'. > I am not very clear on how apc (or eaccelerator) works in such cases. > > > 2) What about garbage collection? In a standard apache-mod-php setup, > we rely on the end of a request-cycle to free up resources - close > file descriptiors, free up memory etc.. > I am assuming in the aforesaid standalone daemon case, we would > have to do this manually? In the loop above, would it be better to > 'unset($a)' explicitly at the end of it before > it goes to the next iteration? > > Note: I have written pre-forker deamons in php directly and > successfully deployed them in the past, but never looked at in depth > to understand all the nuances. Anecdotally, I have > done 'unset()' at some critical places were large arrays were used, > and I think it helped. AFAIK, unlike Java, there is no 'garbage > collector' thread that does all the magic? > > Thanks, > Ravi
If I have time when you reply I'll answer the questions, but I must ask: Is this purely academic? Why is this a concern? Have you encountered issues? If so, what? -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php