<?php
ignore_user_abort();
set_time_limit(0);
$interval = 3600;
do
{
    if(file_exists('stop'))
exit;
    $fp = fopen('text','a');
    fwrite($fp,date('Y-m-d H:i:s')."\r\n");
    fclose($fp);
    sleep($interval);
}
while(true);
?>
test结果:
2012-01-04 11:00:02
2012-01-04 11:59:05
2012-01-04 12:00:02
2012-01-04 12:59:05
2012-01-04 13:00:02
2012-01-04 13:59:05
2012-01-04 14:00:02
2012-01-04 14:59:05
2012-01-04 15:00:02
2012-01-04 15:59:05
2012-01-04 16:00:02
2012-01-04 16:59:05
2012-01-04 17:00:02
2012-01-04 17:59:05
2012-01-04 18:00:02
2012-01-04 18:59:05
2012-01-04 19:00:02
2012-01-04 19:59:08
2012-01-04 20:00:05
2012-01-04 20:59:12
2012-01-04 21:00:08
2012-01-04 21:59:15
2012-01-04 22:00:12
2012-01-04 22:59:19
2012-01-04 23:00:15
2012-01-04 23:59:22
2012-01-05 00:00:19
2012-01-05 00:59:26
2012-01-05 01:00:23
2012-01-05 01:59:30
2012-01-05 02:00:26
2012-01-05 02:59:33
2012-01-05 03:00:30
2012-01-05 03:59:37
2012-01-05 04:00:34
2012-01-05 04:59:41
2012-01-05 05:00:37
2012-01-05 05:59:44
2012-01-05 06:00:41
2012-01-05 06:59:48
2012-01-05 07:00:44
2012-01-05 07:59:52
2012-01-05 08:00:48这代码怎么运行不到24个小时就挂了,我的就行了21个小时,它应该无限执行下去才对啊,服务器没有重启过一直运行着。
不知道怎么回事 求大家帮助!

解决方案 »

  1.   

    我不知道你用的是什么操作系统,我感觉作计划任务的时候,不要让php去无限循环,通过其它途径去实现。
    比如:
    Linux系统的话,可以把你的程序加到cron里面去。让cron一天执行一次就OK了。
    Windows系统的话,好像是有个任务计划什么的。把你的php程序加到那里面比较好一些。
    个人意见,仅供参考。
      

  2.   

    我的是win2003 iis服务器。window下的计划任务最小单位只能是天 我想每小时执行。如果是linux就像你说的就好办了。所以现在我只能用php去无限循环
      

  3.   

    你现在这种方式等于挂着个apache子进程一直执行php,说不准apache里面那个配置值就会影响到这个功能。
    最好还是操作系统取执行计划任务,你说的“window下的计划任务最小单位只能是天”问题应该是不存在的
    看文档
    http://support.microsoft.com/kb/308569
    有这么一句话:备注: 如果打开了“任务计划”,则可通过以下方法随时打开任务的属性对话框:右键单击该任务,然后单击属性。 不能将任务安排成在小于一天的时间间隔内重复;但是,可在属性对话框中这样做:
    单击日程安排选项卡,然后单击高级。
    单击选中“重复任务”复选框,然后指定希望任务在多少分钟或多少小时后重复。
      

  4.   

    你要仔细检查你代码的内存使用情况,
    因为php结束会释放资源,但是,如果你是一直运行的,有些资源一直无法释放就很正常了....
    这也有可能是造成死掉的一个原因
      

  5.   

    LZ真霸气,居然用PHP来搞这玩意,哥第一次听说一个PHP程序执行1天!