저는 PHP에서 exec() 명령을 사용하는 것이 처음입니다. 저는 이것을 phantomJS라는 스크립트와 함께 사용하고 있습니다(http://phantomjs.org/) 내 웹사이트 페이지의 PDF를 생성하는 프로세스를 실행합니다.
문제는 exec()를 실행하면 보통 3~5초 정도 안에 스크립트 실행이 끝난다는 것입니다. 그러나 때로는 로딩이 영원히 계속되어 5분 이상 완료되지 않는 경우도 있었습니다. 이러한 경우에는 페이지를 새로 고치기만 하면 됩니다(페이지 로드 시 스크립트가 실행됨). 이 작업을 수행한 후 CPanel에서 메모리 사용량을 확인했는데 마치 프로세스가 계속 실행 중인 것처럼 메모리 사용량이 높게 유지됩니다.
이 문제의 원인은 무엇입니까? 지나치게 오랫동안 실행되는 프로세스를 종료하기 위해 이미 set_time_limit(60)을 설정했지만 여전히 높게 유지됩니다. 다른 가능한 원인을 확인했지만 이 실행 프로세스와 관련이 있다고 확신합니다.
참고로 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;
}
}
미리 감사드립니다