我對在 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;
}
}
先致謝