在循环中写入数组时超出了PHP内存

时间:2016-04-22 16:13:19

标签: php arrays loops

我需要在循环内更新数组中的值。通常这样可以正常工作,但是关于这个循环的一些事情会导致内存最大化。

while ($watering_window['total_run_time'] > $water_window_total)
{
    foreach ($master_schedule as &$_ms)
    {
      $current_soak_time = $_ms['between_starts'] - $_ms['total_run_time'];
      if ($current_soak_time > 0)
      {
          $new_soak_time = ceil($current_soak_time * 0.9);
          $_ms['between_starts'] = $_ms['total_run_time'] + $new_soak_time;
          $watering_window['total_run_time'] -= $current_soak_time - $new_soak_time;
      }
    }
}

写入$_ms['between_starts'](现有密钥)导致内存问题。如果我改变它来写一个新键(如$_ms['between_starts_new'],没有内存问题。我也尝试写一个常量值(而不是一些东西),它仍然超时。

2 个答案:

答案 0 :(得分:3)

您需要增加memory_limit。 在php脚本的顶部添加以下内容:

<?php
ini_set('memory_limit','256M');
...

根据您的需要调整值。

答案 1 :(得分:2)

在设置之前尝试取消导致问题的密钥。

 $scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
      if(toState == 'utab.history')
      {
          // do your stuff
      }
 });