Ich bin ziemlich neu im Umgang mit dem exec()-Befehl in PHP. Ich verwende ihn zusammen mit diesem Skript namens phantomJS (http://phantomjs.org/), um einen Prozess auszuführen, der ein PDF der Seiten meiner Website erstellt.
Das Problem ist, dass das Skript normalerweise nach 3 bis 5 Sekunden fertig ist, wenn ich exec() ausführe. Manchmal dauert das Laden jedoch ewig und dauert mehr als 5 Minuten. In diesen Fällen aktualisiere ich einfach die Seite (das Skript wird beim Laden der Seite ausgeführt). Nachdem ich dies getan habe, überprüfe ich meine Speichernutzung im CPanel und die Speichernutzung bleibt hoch, als ob der Prozess noch läuft.
Was könnte die Ursache dafür sein? Ich habe bereits ein set_time_limit(60) gesetzt, um alle Prozesse zu beenden, die zu lange laufen, aber der Wert bleibt einfach hoch. Ich habe andere mögliche Ursachen geprüft, aber ich bin sicher, dass es mit diesem Exec-Prozess zu tun hat.
Zu Ihrer Information: exec() löst einige MySQL-Abfragen aus.
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;
}
}
Dank im Voraus