PHP exec (), заставляющий использование памяти оставаться высоким?


1

Я совершенно новичок в использовании команды exec () в php. Я использую его вместе с этим скриптом phantomJS ( http://phantomjs.org/ ), чтобы запустить процесс, который создает PDF страницы моего сайта.

Проблема в том, что когда я запускаю exec (), он обычно завершает выполнение скрипта примерно через 3-5 секунд. Однако иногда загрузка продолжалась вечно, не заканчиваясь дольше 5 минут. В этих случаях я просто обновляю страницу (скрипт запускается при загрузке страницы). После этого я проверяю использование моей памяти в CPanel и использование памяти остается высоким, как будто процесс все еще выполняется.

Что может быть причиной этого? Я уже установил set_time_limit (60), чтобы убить любые долго работающие процессы, но он просто остается высоким. Я проверил другие возможные причины, но я уверен, что это связано с этим процессом exec.

К вашему сведению, exec () запускает некоторые запросы MySQL.

class Challenge_mealplanner_print extends Challenge_mealplanner {

 private function generate_personal_details_string($this_page_round_number, $week_number){
      return get_current_user_id().'-'.$this_page_round_number.'-'.$week_number;
 }

 function generate_personal_mealplanner_pdf($this_page_round_number, $week_number){
     $phantomjs_loc = escapeshellarg(realpath('').'/path/to/some/script');
     $mealplanner_gen_script_loc = escapeshellarg(realpath('').'/path/to/some/script');
     $mealplanner_print_page_uri = escapeshellarg('/path/to/some/script'.$this->generate_personal_details_string($this_page_round_number, $week_number));
     $pdf_file_name = escapeshellarg('Mealplan-'.$this_page_round_number.'-'.$week_number.'.pdf');

     unset($this_page_round_number, $week_number);

     $result = exec( $phantomjs_loc.' '.$mealplanner_gen_script_loc.' '.$mealplanner_print_page_uri.' '.$pdf_file_name.' A4 2>&1');
     return $result;
 }

}

заранее спасибо


Обновление - я проверил Диспетчер процессов в моем менеджере веб-хостов, и мои опасения подтвердились - было 8 процессов, запущенных этой командой exec (), которые не остановились. Несмотря на то, что использование памяти этими процессами показывало 0, когда я их убивал, все использование памяти уменьшилось. Я думаю, что мне нужно решить, как сделать так, чтобы эти процессы были убиты и не задерживались. Поможет ли это сделать die () или exit () в конце скрипта?
Зак
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.