%20%E3%81%AB%E3%82%88%E3%82%8A%E3%83%A1%E3%83%A2%E3%83%AA%E4%BD%BF%E7%94%A8%E9%87%8F%E3%81%8C%E9%AB%98%E3%81%8F%E3%81%AA%E3%82%8A%E7%B6%9A%E3%81%91%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私はPHPでexec()コマンドを使うのが初めてです。私はこれをphantomJSというスクリプトと一緒に使っています(http://phantomjs.org/) を使用して、Web サイトのページの PDF を作成するプロセスを実行します。
問題は、exec() を実行すると、通常は 3 ~ 5 秒ほどでスクリプトの実行が完了することです。ただし、読み込みが永遠に続き、5 分以上も完了しないことがあります。このような場合は、ページを更新するだけです (スクリプトはページの読み込み時に実行されます)。これを実行した後、CPanel でメモリ使用量を確認すると、プロセスがまだ実行されているかのようにメモリ使用量が高いままです。
何が原因なのでしょうか? 明らかに長時間実行されているプロセスを強制終了するために set_time_limit(60) をすでに設定していますが、値が高止まりしています。他の考えられる原因も確認しましたが、この exec プロセスに関係していることは間違いありません。
ちなみに、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;
}
}
前もって感謝します