PHP exec () змушує використовувати пам'ять, щоб залишатися високою?


1

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

Проблема полягає в тому, що, коли я запускаю exec (), він зазвичай завершує виконання сценарію приблизно за 3 ~ 5 секунд. Проте іноді навантаження продовжувалося б назавжди, не закінчуючись більше 5 хвилин. У цих випадках я просто оновлюю сторінку (сценарій виконується під час завантаження сторінки). Після цього я перевіряю використання пам'яті в CPanel і використання пам'яті залишається високим, як якщо б процес все ще працює.

Що може бути причиною цього? Я вже встановив set_time_limit (60), щоб вбити будь-які відкриті процеси, але він просто залишається високим. Я перевірив інші ймовірні причини, але я впевнений, що це пов'язано з цим процесом виконання.

FYI, 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;
 }

}

Спасибі заздалегідь


Оновлення - Я перевірив Process Manager у своєму менеджері веб-хостингу, і мої побоювання підтвердилися істинними - було запущено 8 процесів, які не були зупинені. Навіть незважаючи на те, що використання пам'яті цих процесів відображалося як 0, коли я вбив їх, все використання пам'яті пішло. Думаю, для мене треба розібратися, як переконатися, що ці процеси вбиті, а не примусовані. Чи буде це робити ставлення die () або exit () в кінці сценарію?
Zach
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.