คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

เพิ่มเวลาดำเนินการสคริปต์ 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) ;

ตอนนี้เราไม่ได้รับข้อความแสดงข้อผิดพลาด