RT,在一个页面中我需要计算大量的数据,插入或者更新数据库,这个页面执行时间可能长达几小时。
众所周知,php执行时间会出现超时的情况,请问如何设置超时时间的大小(不修改php.ini的情况下)
还有,我想把php超时的时候计算在哪一步记录进日志里面好分析,请问有什么方法在超市前记录下堆栈
在线等,先谢谢各位

解决方案 »

  1.   

    set_time_limit — 设置脚本最大执行时间
    Report a bug
    说明
    void set_time_limit ( int $seconds )设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,或者是在php.ini的max_execution_time被定义的值,如果此值存在。当此函数被调用时,set_time_limit()会从零开始重新启动超时计数器。换句话说,如果超时默认是30秒,同时,脚本中又设置了25秒,如 set_time_limit(20)。那么,脚本在超时之前可运行总共时间为45秒。
      

  2.   

    至于第二点,你可以在每个步骤执行完后进行一个标识赋值(如:$_SESSION['timeout'] = '1'代表第一步骤),当超时之前将这个标识存起来
      

  3.   

    - -看的有点迷糊啊~!每执行一个步骤就存一下啊?那代码里不全是这个标识了?
    set_time_limit 这个函数设置的时间是加上默认的超时时间对吧?那如果我需要设置几个小时,默认时间就可以忽略不计了
      

  4.   

    我php.ini的max_execution_time的默认值是30,如果我在文件开头处加上set_time_limit(30),s是否表示超时时间为60?如果需要记录日志的话,有更好的方法吗?你说的我不是很懂- -悟性太低了
      

  5.   

     这个是必须记录的,如果是循环的话很简单的,你只需要记录循环的次数,下次执行直接从第N次开始。如果不是循环的话哪就一步一步来吧,可以给每个步骤加标记(不是循环的情况),下次执行用goto跳到该标记处
      

  6.   

    set_time_limit就是动态的设置的max_execution_time,它们是一个东西,只不过set_time_limit是暂时性的设置(也就是当前程序暂时用这个设置)
      

  7.   

    你要分析执行步骤和超时有关系吗?
    你逻辑代码里不写log记录步骤,那你还想怎么分析?
      

  8.   

    set_time_limit()设置超时时间.ob_start(fun)其中fun表示输出时调用,可以用这个判断输出错误字符串的有没有超时.