2013-10-25 73 views
0

while循环与之相比2个日期看,如果1小于另一个,如果没有的话一个星期增加了第一次约会,我有以下循环。PHP通过日期

它工作正常,但是那里是日期(即超过12个月),我收到了超时错误,因为它已经通过了最大执行时间之间有较大的差异。

任何人都可以帮助我提高效率吗?

 while($startDate->timestamp < $current_week->timestamp){ 
      $data['weeks'][$w] = array(
       'monday' => $startDate->startofWeek()->format('d/m/Y'), 
       'sunday' => $startDate->endofWeek()->format('d/m/Y') 
      ); 
      $w++; 
      $startDate = $startDate->addDays(7); // Move it on to the following week 
     } 

我要补充一点,我与碳API扩展的DateTime工作

感谢

---- ----编辑

奇怪的事情发生了,我不明白。如果我在2013-01-06之后将硬编码的日期通过硬编码到$ startDate,那么一切正常(而且很快),但在此日期之后,它就会超时。任何想法的人?

+0

这意味着,执行你的脚本需要比是在参数或者set_time_limit设定更长(默认30秒),你可能想看看你的脚本再次使其更快,或者您可以将set_time_limit设置为更大的值。 – redelschaap

+0

@ Ronald01990是的,我知道,我只是在不改变set_time的情况下问我如何让循环更有效率。谢谢 – bencarter78

+0

你真的需要创建这个数组吗? – Ashalynd

回答

0

看起来您正在对$startDate做比您期望的更多 - 您正在修改对象->startOfWeek()->endOfWeek(),而不是只计算字符串输出;我的源头Carbon的解读是,每次调用方法修改的对象,所以在while循环的最后一行的任务是不必要的(它可以很容易地被写为$startDate->addDays(7);。由于你的代码是一个结果效率比它低一点,甚至可能比你想要的还要多一倍或两倍。

不过,我会怀疑这个代码块不是你真正的问题,而且它更接近你的代码库 - 如果你的问题,成长与$数据的大小[“周”]那么它可能是一些在你正在处理它为你的HTML的方式。

+0

这只是我必须忍受的第二件事,然而,实际上,我需要找出在特定日期超时的原因(见上面的编辑)。你对addDays函数是正确的,但它仍然可以工作,因为它应该不管它我通过addDays(1)或addDays(7) – bencarter78