我对在 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;
}
}
提前致谢