Я абсолютно новачок у використанні команди 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;
}
}
Спасибі заздалегідь