CakePHP 3: Http Client после прочтения большого процесса XML Kill, как очистить память? - PullRequest
0 голосов
/ 25 мая 2018
// loop multiple sources
foreach ($sources as $source) {
          $this->remote($source['url']);
          sleep(10);
      }
//

затем захватывает удаленный xml и читает результаты, но после прочтения первого большого xml следующий процесс уничтожит ..

public function remote($fileUrl)
{
  try {
    $http = new Client();
    $results = $http->get($fileUrl,[], ['timeout' => 2000]);
    $xml = $results->xml; // <----------- 1st success, then kill next loop

    //$this->prepare_data($xml);
    $http = null;
    $results = null;
    $xml = null;

  } catch (\Exception $e) {
      \Cake\Log\Log::error("File does not exists or can't read!", "error");
      \Cake\Log\Log::error($e->getMessage(), 'error');
  }
  return true;
}

У меня есть эта проблема только при тестировании и на главном сервере ( platform.sh ), у разработчика localhost нет проблем.

Как очистить память && свободный ресурс после первого цикла?

1 Ответ

0 голосов
/ 25 мая 2018

Это, вероятно, тайм-аут php, вы можете (не рекомендуется):

ini_set('max_execution_time', 300);

Но я рекомендую вам запустить этот процесс в фоновом режиме, используя CakePHP Shell, см. https://book.cakephp.org/3.0/en/console-and-shells.html#the-cakephp-console

...