เพิ่มเวลาดำเนินการสคริปต์ php ini เพิ่มเวลาดำเนินการสคริปต์ PHP ด้วย Nginx การเปลี่ยนแปลงใน PHP-FPM
คุณเคยได้รับข้อผิดพลาด ข้อผิดพลาดร้ายแรง: เกินเวลาดำเนินการสูงสุด 30 วินาทีในเวิร์ดเพรส? ข้อผิดพลาดนี้หมายความว่าสคริปต์ PHP ที่รันอยู่ต้องใช้เวลาดำเนินการมากกว่าขีดจำกัด และด้วยเหตุนี้สคริปต์จึงหยุดทำงาน คู่มือนี้จะช่วยคุณหาวิธีเพิ่มเวลาดำเนินการสคริปต์ใน PHP และช่วยแก้ไขข้อผิดพลาดที่เกิดขึ้น
ก่อนเริ่มคู่มือ ให้ตรวจสอบ:
- เข้าถึงคอนโซลผู้ดูแลระบบของไซต์ WordPress ของคุณ
ขั้นตอนที่ 1 – การติดตั้งปลั๊กอิน WP Maximum Execution Time Exceeded
WordPress มีชุมชนขนาดใหญ่ ดังนั้นสำหรับการทำงานใด ๆ ที่คุณต้องการ มีปลั๊กอินที่มีประโยชน์หรือแม้แต่หลายตัว สถานการณ์ของเราก็ไม่มีข้อยกเว้น เพื่อเพิ่มเวลาดำเนินการของสคริปต์ใน PHP คุณสามารถใช้ปลั๊กอิน WP Maximum Execution Time Exceeded และกำจัดข้อผิดพลาดที่เกิดขึ้น คำแนะนำโดยละเอียดเกี่ยวกับวิธีติดตั้งปลั๊กอิน WordPress สามารถดูได้ที่นี่
ปลั๊กอินนี้แก้ไขไฟล์ .htaccess และเพิ่มขีดจำกัดเวลาดำเนินการของสคริปต์ หลังจากติดตั้งปลั๊กอินแล้ว คุณไม่จำเป็นต้องทำอะไรอีก ปลั๊กอินทำทุกอย่างเรียบร้อยแล้ว ปลั๊กอินไม่มีหน้าการตั้งค่า ดังนั้นหากคุณต้องการคืนค่าการตั้งค่าก่อนหน้า เพียงลบปลั๊กอินออกแล้ว .htaccess จะกลับสู่รูปแบบเดิม
ขั้นตอนที่ 2 - การแก้ไขไฟล์ .htaccess ด้วยตนเอง
หากคุณมีปลั๊กอินที่ติดตั้งไว้จำนวนมากแล้ว และไม่ต้องการใช้ปลั๊กอินเพิ่มเติม หรือมันไม่ได้ผลสำหรับคุณ คุณสามารถแก้ไขไฟล์ .htaccess ด้วยตนเองเพื่อเพิ่มขีดจำกัดเวลาการดำเนินการสูงสุด วิธีใช้ที่ง่ายที่สุด ตัวจัดการไฟล์อยู่ในแผงควบคุมของคุณ หากคุณไม่ทราบวิธีค้นหาไฟล์ .htaccess โปรดดูคำแนะนำโดยละเอียด คุณจะต้องป้อนรหัสต่อไปนี้ในไฟล์ .htaccess ที่ด้านล่าง และบันทึกโดยคลิก บันทึก:
php_value max_execution_time 60
สิ่งนี้จะเพิ่มค่าของพารามิเตอร์ max_execution_time และสำหรับ PHP เวลาในการดำเนินการสคริปต์เป็น 60 วินาที (1 นาที) หากคุณยังคงได้รับข้อผิดพลาดนี้ ให้ลองเพิ่มขึ้นอีก - มากถึง 120/180 วินาทีและต่อไปเรื่อยๆ
ขั้นตอนที่ 3 - การเปลี่ยนค่าของ max_execution_time ใน cPanel
หากคุณใช้ cPanel คุณสามารถเพิ่มค่าของพารามิเตอร์ max_execution_time ได้โดยตรงผ่าน cPanel ไปที่ส่วน เลือกเวอร์ชัน PHP (เลือกเวอร์ชัน PHP).
เพิ่มมูลค่าที่คุณเห็นในบรรทัด max_execution_time. โดยปกติแล้ว ค่าเริ่มต้นจะตั้งไว้ที่ 30 วินาที ในตัวอย่างของเรา เราเพิ่มเป็น 60 วินาที คลิก นำมาใช้(นำไปใช้) เพื่อบันทึกการเปลี่ยนแปลง
เพียงเท่านี้ คุณก็เพิ่มค่าจำกัดของพารามิเตอร์สำเร็จแล้ว max_execution_timeสำหรับไซต์ของคุณ
บทสรุป
เมื่อทำตามคำแนะนำนี้ คุณได้เรียนรู้ 3 วิธีในการเพิ่มพูน max_execution_timeเพื่อให้ WordPress เปลี่ยนเวลาดำเนินการของสคริปต์ใน PHP และกำจัดข้อผิดพลาด ข้อผิดพลาดร้ายแรง: เกินเวลาดำเนินการสูงสุด. หากคุณใช้โฮสติ้งที่ใช้ร่วมกันและไม่มีวิธีแก้ปัญหาใดที่เหมาะกับคุณ ให้ติดต่อผู้ให้บริการโฮสติ้งของคุณเพื่อตรวจสอบว่าข้อจำกัดที่แท้จริงของคุณคืออะไร และสามารถเปลี่ยนแปลงได้หรือไม่
หากคุณมีโปรเจ็กต์หรือเซิร์ฟเวอร์ขนาดใหญ่ที่มีทรัพยากรจำกัด คุณมักจะเห็นข้อผิดพลาด "504 Gateway Time-out"
คุณสามารถทำตามขั้นตอนด้านล่างเพื่อเพิ่มค่าการหมดเวลา ใน PHP ค่าเริ่มต้นคือ 30 วินาที
การเปลี่ยนแปลงใน php.ini
หากคุณต้องการเปลี่ยนเวลาดำเนินการสูงสุดสำหรับสคริปต์ PHP จาก 30 วินาที (ค่าเริ่มต้น) เป็น 300 วินาที
นาโน /etc/php5/fpm/php.ini
ติดตั้ง...
Max_execution_time = 300
ใน Apache PHP ทำงานเป็นโมดูล การเปลี่ยนแปลงเหล่านี้ก็เพียงพอแล้ว แต่ในกรณีของเรา เราจำเป็นต้องเปลี่ยนแปลงอีกสองสามแห่ง
การเปลี่ยนแปลงใน PHP-FPM
สิ่งนี้จำเป็นหากคุณไม่ได้แสดงความคิดเห็นพารามิเตอร์ request_terminate_timeout ก่อนหน้านี้ มันถูกใส่ความคิดเห็นโดยค่าเริ่มต้นและรับค่าที่พบ max_execution_time จาก php.ini
กำลังเปิด...
นาโน /etc/php5/fpm/pool.d/www.conf
กำลังติดตั้ง...
Request_terminate_timeout = 300
การเปลี่ยนแปลงการกำหนดค่า Nginx
การเพิ่มขีดจำกัดเวลาสำหรับหนึ่งโดเมน ตัวอย่าง.คอม
ตำแหน่งนาโน /etc/nginx/sites-available/example.com ~ \.php$ ( รวม /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }
หากคุณต้องการเพิ่มการจำกัดเวลาสำหรับทุกโดเมนบนเซิร์ฟเวอร์ของคุณ คุณสามารถแก้ไขไฟล์คอนฟิกูเรชันหลัก nginx.conf ได้:
นาโน /etc/nginx/nginx.conf
เพิ่มพารามิเตอร์ต่อไปนี้ในส่วน http(..)
http(#... fastcgi_read_timeout 300; #... }
หากคุณกำลังพัฒนาโครงการขนาดใหญ่ การประมวลผลข้อมูลบางอย่างอาจใช้เวลานาน โฮสติ้งที่แตกต่างกันมีข้อ จำกัด สำหรับการกระทำดังกล่าวและหากจำเป็นต้องเพิ่มเวลานี้นำคุณมาที่นี่ฉันจะบอกรายละเอียดว่าสามารถทำได้อย่างไร
เพื่อให้คุณเข้าใจว่าฉันกำลังพูดถึงอะไร ผมขอยกตัวอย่างเล็กๆ น้อยๆ ให้คุณฟัง เมื่อคุณไปเกินกรอบเวลาที่ตั้งไว้ คุณจะได้รับข้อผิดพลาดประเภทต่อไปนี้:
ข้อผิดพลาดร้ายแรง: เกินเวลาดำเนินการสูงสุด 30 วินาทีใน pandoge_com.php ในบรรทัดที่ 19
ฉันจะบอกคุณเกี่ยวกับ 4 วิธีในการกำจัดมัน
แต่ควรเริ่มต้นด้วยความจริงที่ว่าในแต่ละกรณี วิธีการทั้งหมดที่ระบุไว้อาจไม่ทำงาน เนื่องจากผู้ให้บริการโฮสติ้งบางรายห้ามไม่ให้เปลี่ยนพารามิเตอร์นี้ด้วยตนเอง
เพิ่มเวลาดำเนินการของสคริปต์ PHP ผ่านไฟล์การกำหนดค่า php.ini
เป็นวิธีแรกในการเพิ่มเวลาดำเนินการของสคริปต์ เราจะใช้ไฟล์การกำหนดค่า php.ini.
หากต้องการทราบว่าไฟล์นี้อยู่ที่ใด โปรดอ่าน
เปิดในวิธีที่สะดวกสำหรับคุณและวางที่ด้านล่างสุด:
Max_execution_time = 300;
ที่ไหน " 300 ” หมายถึง 300 วินาที (เปลี่ยนเป็นของคุณเอง) น่าเสียดายที่ไฟล์นี้ไม่มีให้ผู้ใช้แก้ไขบนโฮสติ้งทั้งหมด
เพิ่มเวลาดำเนินการของสคริปต์ PHP ผ่านฟังก์ชัน "ini_set" ในตัว
วิธีที่สองขึ้นอยู่กับการใช้ฟังก์ชัน " ini_set". คุณแทรกลงในไฟล์สคริปต์ได้โดยตรง โดยเฉพาะอย่างยิ่งที่ด้านบนสุด ตัวอย่าง:
นี่ความหมายคือ " 300 » คุณยังเปลี่ยนเป็นสิ่งที่คุณต้องการได้ในไม่กี่วินาที บันทึกเมื่อใช้ PHP ในเซฟโหมด คุณสมบัตินี้จะไม่สามารถใช้งานได้
เพิ่มเวลาดำเนินการของสคริปต์ PHP ผ่านฟังก์ชันในตัว "set_time_limit"
วิธีที่สาม ซึ่งน่าจะเป็นวิธีที่ได้รับความนิยมมากที่สุดวิธีหนึ่งคือการใช้ " set_time_limit' เพื่อเปลี่ยนเวลาดำเนินการของสคริปต์ ยังใช้โดยตรงในไฟล์ PHP เอง ตัวอย่าง:
ที่นี่ " 300 » คุณยังเปลี่ยนเป็นค่าที่คุณต้องการ ขอแนะนำให้ใส่รหัสที่ด้านบนสุด
เพิ่มเวลาดำเนินการสคริปต์ PHP ผ่านไฟล์ .htaccess
ตัวเลือกสุดท้ายคือการแก้ไขไฟล์ .htaccessซึ่งอยู่ในรูทของไซต์ของคุณ (หากไม่มี ให้สร้างขึ้นใหม่)
ที่ด้านบนสุดของไฟล์นี้ ให้วาง:
php_value max_execution_time 300
ความหมาย " 300 » คุณยังเปลี่ยนเป็นของคุณเอง
บันทึกในทุกกรณีเวลาดำเนินการของสคริปต์จะถูกระบุเป็นวินาที นอกจากนี้ ค่าพารามิเตอร์ในทุกเมธอดสามารถใช้ " 0 ” ซึ่งหมายถึงเวลาดำเนินการไม่จำกัด
จะทราบได้อย่างไรว่าใช้เวลาในการรันสคริปต์ PHP นานเท่าใด
หลังจากวิธีใดวิธีหนึ่งที่คุณพยายามเปลี่ยนเวลาดำเนินการของสคริปต์ คุณต้องค้นหาว่าคุณทำสำเร็จจริงหรือไม่
ในการทำเช่นนี้ ให้สร้างไฟล์ PHP ในรูทของไซต์ของคุณ ซึ่งคุณจะแสดงค่าของเวลาที่ตั้งไว้:
หากเวลาเท่ากับที่คุณระบุ ขอแสดงความยินดี คุณบรรลุเป้าหมายที่ต้องการแล้ว มิฉะนั้น ให้อ่านบทความอีกครั้ง เขียนความคิดเห็นเกี่ยวกับปัญหาของคุณ หรือส่งต่อไปยังผู้ให้บริการโฮสติ้งของคุณ
จากผู้เขียน:ลูกชายของเพื่อนของฉันสนใจวิชาเคมีมากจนเริ่มทำ "การทดสอบ" หลายอย่างที่บ้าน หลังจากที่ "เหยื่อ" ของพวกเขาคือโคมระย้าในครัว พ่อของเขาขอให้เขาเปลี่ยนการเสพติด เป็นผลให้เด็กเริ่มสนใจสถิติและตัดสินใจคำนวณเวลาการเผาไหม้เฉลี่ยของการแข่งขันหนึ่งนัด ผลคือไฟไหม้ทั้งอพาร์ตเมนต์ ฉันแนะนำ "นักวิทยาศาสตร์ผู้โชคร้าย" ให้เริ่มเขียนโปรแกรม และตั้งเวลาการทำงานของสคริปต์ PHP
ทำไมการวัดในการเขียนโปรแกรม
ประการแรก ปลอดภัยกว่าเคมีและสถิติ แต่ในความเป็นจริง เวลาดำเนินการของรหัสโปรแกรมเป็นพารามิเตอร์สำคัญที่ส่งผลต่อประสิทธิภาพของทรัพยากรทั้งหมดและแต่ละโมดูล พารามิเตอร์นี้เป็นที่ต้องการมากขึ้นสำหรับการเพิ่มประสิทธิภาพและการทดสอบ
มาเพ้อฝันกันสักหน่อย ลองนึกดูว่ามีเอ็นจิ้น "เขียนเอง" บางประเภทซึ่งผู้พัฒนา "อัปโหลด" ไปยังโฮสติ้งที่ดีและเปิดตัว (ตามนั้น) เว็บไซต์ของเขา แต่ด้วยเหตุผลบางประการ การโหลดทรัพยากรในฝั่งผู้ใช้จึงช้ามาก
ในสถานการณ์เช่นนี้ ในขั้นต้น การกระแทกทั้งหมดจะ "ตก" ไปที่โฮสต์ เป็นไปได้มากว่าโปรแกรมเมอร์ที่โกรธแค้นจะยื่นเรื่องร้องเรียนกับบริการสนับสนุนการโฮสต์ พวกเขาบอกว่าไม่ปฏิบัติตามเงื่อนไขของสัญญาไซต์แทบจะไม่ "มีชีวิต" ...
แต่ในความเป็นจริงแล้ว ปัญหาของการโหลดหน้าไดนามิกรีซอร์สช้าอาจซ่อนอยู่ในเอ็นจิ้นเอง และเพื่อไม่ให้ดูเหมือน "กาน้ำชา" ในภายหลัง นักพัฒนาที่มีประสบการณ์มักจะวัดเวลาดำเนินการของสคริปต์ PHP ก่อนที่จะส่งโครงการ
คุณสมบัติของ PHP
ฉันเรียกภาษาโปรแกรมที่สะดวกที่สุดภาษาหนึ่งเสมอ ในการติดตามเวลาทำงานของโค้ด นักพัฒนาซอฟต์แวร์ไม่จำเป็นต้องเขียน "talmuds" ยาวเพื่อสกัดกั้นแต่ละบรรทัดของสคริปต์ เทคโนโลยีนี้ใช้เครื่องมือพิเศษหลายอย่าง ที่สำคัญที่สุดคือฟังก์ชัน microtime() คืนเวลา (เป็นมิลลิวินาที) ตั้งแต่ต้นปี 1970 เรียกว่า "unix epoch" หากคุณส่งพารามิเตอร์ get_as_float ไปยังฟังก์ชันโดยมีค่าเป็น true ช่วงเวลานั้นจะส่งกลับช่วงเวลาในรูปแบบของวินาทีทั้งหมดและเศษส่วนมิลลิวินาที
หลักการของการใช้ microtime() มีดังนี้ ฟังก์ชันถูกเรียกใช้ที่จุดเริ่มต้นของสคริปต์และที่ส่วนท้ายของสคริปต์ จากนั้นค่าเริ่มต้นจะถูกลบออกจากค่าสุดท้าย วิธีคำนวณเวลาดำเนินการของสคริปต์มีดังนี้
"; $last=microtime(true); $value=$last-$first; echo "สคริปต์ถูกเรียกใช้งานสำหรับ: ".$value; ?>
เปลี่ยนเวลาทำงานของรหัส
ใน PHP ค่าของเวลาทำงานของสคริปต์สามารถถูกจำกัดทางโปรแกรม (ลดหรือเพิ่ม) ในการทำเช่นนี้ มีการใช้ฟังก์ชันหลายอย่าง ซึ่งแต่ละฟังก์ชันจะแทนที่พารามิเตอร์ที่ตั้งค่าไว้ในไฟล์กำหนดค่า (php.ini)
ก่อนอื่นมาแก้ไขโค้ดของเราและเพิ่มจำนวนการวนซ้ำ 20 ถึง 200 ล้านครั้ง หากทุกอย่างเรียบร้อยดี หลังจากเรียกใช้สคริปต์ คุณควรได้รับข้อความแสดงข้อผิดพลาดร้ายแรง
ซึ่งหมายความว่าพารามิเตอร์ max_execution_time ถูกตั้งค่าเป็นค่าเริ่มต้น (30 วินาที) ในการตั้งค่า มาเพิ่มเวลาดำเนินการสคริปต์ PHP สูงสุด 3 เท่ากันเถอะ
set_time_limit(90) ; |
ตอนนี้เราไม่ได้รับข้อความแสดงข้อผิดพลาด