PHP exec () facendo sì che l'utilizzo della memoria rimanga elevato?


1

Sono abbastanza nuovo nell'usare il comando exec () in php. Lo sto usando insieme a questo script chiamato phantomJS ( http://phantomjs.org/ ) per eseguire un processo che crea un pdf delle pagine del mio sito Web.

Il problema è che quando eseguo exec (), di solito termina l'esecuzione dello script in circa 3 ~ 5 secondi. Tuttavia a volte il caricamento potrebbe continuare all'infinito, non terminando per più di 5 minuti. In questi casi aggiorno solo la pagina (lo script viene eseguito al caricamento della pagina). Dopo aver fatto ciò, controllo l'utilizzo della memoria in CPanel e l'utilizzo della memoria rimane elevato come se il processo fosse ancora in esecuzione.

Che cosa potrebbe causare questo? Ho già impostato un set_time_limit (60) per eliminare qualsiasi processo in esecuzione troppo lungo, ma rimane alto. Ho verificato altre probabili cause ma sono sicuro che abbia a che fare con questo processo exec.

Cordiali saluti, il exec () innesca alcune query 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;
 }

}

Grazie in anticipo


Aggiornamento: ho controllato Process Manager nel mio gestore di host web e le mie paure sono state confermate vere: c'erano 8 processi avviati da questo comando exec () che non si sono fermati. Anche se l'utilizzo della memoria di questi processi mostrava 0, quando li ho uccisi tutto l'utilizzo della memoria è andato giù. Immagino che la cosa da risolvere per me sia, come posso assicurarmi che questi processi vengano uccisi e non indugiati. Mettere die () o exit () alla fine dello script lo farebbe?
Zach,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.