PHP exec () ทำให้การใช้งานหน่วยความจำอยู่ในระดับสูง?


1

ฉันค่อนข้างใหม่ในการใช้คำสั่ง exec () ใน php ฉันใช้มันพร้อมกับสคริปต์นี้เรียกว่า phantomJS ( http://phantomjs.org/ ) เพื่อเรียกใช้กระบวนการที่สร้างไฟล์ PDF ของหน้าเว็บไซต์ของฉัน

ปัญหาคือเมื่อฉันรัน exec () มันมักจะเสร็จสิ้นการเรียกใช้สคริปต์ในประมาณ 3 ~ 5 วินาที อย่างไรก็ตามบางครั้งการโหลดจะดำเนินต่อไปตลอดกาลไม่จบเกิน 5 นาที ในกรณีเหล่านี้ฉันเพิ่งรีเฟรชหน้าเว็บ (สคริปต์รันบนการโหลดหน้า) หลังจากทำเช่นนี้ฉันจะตรวจสอบการใช้งานหน่วยความจำใน CPanel และการใช้งานหน่วยความจำยังคงอยู่ในระดับสูงราวกับว่ากระบวนการยังทำงาน

สิ่งใดที่ทำให้เกิดสิ่งนี้ ฉันได้ตั้งค่า set_time_limit (60) เพื่อฆ่ากระบวนการที่ใช้เวลานานเกินไป แต่ก็ยังคงอยู่ในระดับสูง ฉันได้ตรวจสอบสาเหตุที่เป็นไปได้อื่น ๆ แล้ว แต่ฉันแน่ใจว่าเกี่ยวข้องกับกระบวนการ exec นี้

FYI, 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;
 }

}

ขอบคุณล่วงหน้า


อัปเดต - ฉันตรวจสอบตัวจัดการกระบวนการในตัวจัดการโฮสต์เว็บของฉันและความกลัวของฉันได้รับการยืนยันจริง - มี 8 กระบวนการเริ่มต้นโดยคำสั่ง exec () นี้ที่ยังไม่หยุด แม้ว่าการใช้หน่วยความจำของกระบวนการเหล่านี้จะแสดงเป็น 0 แต่เมื่อฉันฆ่าพวกมันทั้งหมดการใช้หน่วยความจำก็ลดลง ฉันเดาว่าสิ่งที่ต้องทำเพื่อฉันคือฉันจะแน่ใจได้อย่างไรว่ากระบวนการเหล่านี้ถูกฆ่าและไม่ได้ทำเพื่ออิทธิพล จะทำให้ตาย () หรือออก () ในตอนท้ายของสคริปต์ทำมันได้หรือไม่
ซัค
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.