RE: Why [?php while (true) { sleep(5); } ?] dies on CLI?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



One of two things is happening:

- PHP is crashing, maybe a memory leak, etc.

Or

- That while(true) loop is exiting, and the script is completing.

Would be interesting to know which, try adding this after the loop:
$fp = fopen('/tmp/test','w');
fputs($fp, 'My script left the loop and exited cleanly.  True ==
false.');
fclose($fp);
 
Back on my first point, have you kept an eye on the memory usage over
the 3 hours?  If your version of PHP has a memory leak with while() or
sleep() (would be odd), a bazillion iterrations could break the PHP
defined memory limit (8M by default) and cause it to exit abruptly.

Are you capturing the output anywhere?  For example, in Linux is it
being run from cron or another script?  Try redirecting STDOUT and
STDERR somewhere useful, i.e.:

php my_php_script > /tmp/scriptoutput 2>&1

(2>&1 means "output stream 2 [stderr] to the same place as stream 1")

Hope any of these crazy ideas are helpful...
- Kyle

 
--
Kyle Smith
Unix Systems Administrator

-----Original Message-----
From: Robert Cummings [mailto:robert@xxxxxxxxxxxxx] 
Sent: Thursday, June 11, 2009 8:25 AM
To: Ford, Mike
Cc: php-general@xxxxxxxxxxxxx
Subject: Re:  Why [?php while (true) { sleep(5); } ?] dies on CLI?

Ford, Mike wrote:
> On 11 June 2009 12:00, Ashley Sheridan advised:
> 
>> On Thu, 2009-06-11 at 10:47 +0000, Jean-Pierre Arneodo wrote:
>>> Hi!
>>> I'm stuck.
>>> I don't understand why the php CLI dies after 3 hours in my script.
> Any
>>> idea to solve? Thanks
>>>
>>>
>>> PHP 5.2.9-0.dotdeb.2 with Suhosin-Patch 0.9.7 (cli) (built: Apr  7
> 2009
>>> 20:06:36) Linux ubuntu  2.6.24-19-server #1 SMP Wed Jun 18 14:44:47
> UTC
>>> 2008 x86_64 GNU/Linux
>>>
>>> Conf [php.ini]
>>> max_execution_time=0
>>>
>>> <?php
>>> while (true) {
>>>         sleep(5);
>>> }
>>>
>>>
>> The while loop will continue executing until its condition is false.
> As
>> you've got a boolean true as the condition, it will never end.
> 
> I think he realises that. His question is why "never" equates to 3 
> hours in his environment.

Shouldn't be max execution time issue if he's running the CLI. Maybe
account limits? Maybe the above snippet isn't what's really happening...

I mean what purpose would the above script serve for 3 hours? Looks like
it's been dumbed down for us dummies on the list.

Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP

--
PHP General Mailing List (http://www.php.net/) To unsubscribe, visit:
http://www.php.net/unsub.php


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux