ข้อผิดพลาดร้ายแรง: เกินเวลาดำเนินการสูงสุด 30 วินาที


397

ฉันกำลังดาวน์โหลดไฟล์ JSON จากแหล่งออนไลน์และเมื่อมันทำงานผ่านลูปฉันได้รับข้อผิดพลาดนี้:

ข้อผิดพลาดร้ายแรง: เกินเวลาดำเนินการสูงสุด 30 วินาทีใน C: \ wamp \ www \ temp \ fetch.php ที่บรรทัด 24


11
ความซ้ำซ้อนของเวลาในการเรียกใช้งานสูงสุดที่เกิน 60 วินาทีซึ่งซ้ำซ้อนกับสามช่วงเวลาอื่น ๆ โปรดใช้ฟังก์ชั่นการค้นหาก่อนถาม
Gordon

"ฟังก์ชั่น set_time_limit () และคำสั่งการกำหนดค่า max_execution_time จะส่งผลต่อเวลาดำเนินการของสคริปต์เท่านั้นทุกครั้งที่มีการใช้งานกิจกรรมที่เกิดขึ้นนอกการดำเนินการของสคริปต์เช่นการเรียกใช้ระบบโดยใช้ระบบ () การดำเนินการสตรีม ไม่รวมอยู่ในการกำหนดเวลาสูงสุดที่สคริปต์ทำงานซึ่งไม่เป็นความจริงใน Windows "จากเอกสารของ PHP
Jacob Sánchez

คำตอบ:


722

วงของคุณอาจไม่มีที่สิ้นสุด หากไม่ใช่คุณสามารถขยายเวลาดำเนินการสูงสุดเช่นนี้:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

และ

set_time_limit(300);

สามารถใช้เพื่อขยายการ จำกัด เวลาชั่วคราว


95
set_time_limit (300) สามารถใช้เพื่อขยายการ จำกัด เวลาชั่วคราว
Omn

ชุดนี้มีไว้สำหรับสคริปต์เดียวเท่านั้นหรือจะมีผลกับสคริปต์อื่นทั้งหมดที่เรียกใช้หลังจากสคริปต์นี้บนเซิร์ฟเวอร์เดียวกัน
Rao

1
@ ราวใช่นี่จะเป็นเพียงสคริปต์เดียวเท่านั้น เพื่อให้สคริปต์ทั้งหมดคุณต้องเปลี่ยนในไฟล์ php.ini คุณสามารถทำ set_time_limit (0); ถ้าคุณต้องการให้สคริปต์ทำงานตลอดไปหรือเป็นเวลานาน
Haseeb

31
ini_set ('max_execution_time', 0); // ไม่ จำกัด
Junaid Atari

3
@Sangam ฉันจะบอกว่ามันเป็นวิธีที่ดีที่สุดเพื่อให้วงเงินนี้ต่ำที่สุดเท่าที่จะเป็นไปได้ในขณะที่อนุญาตให้ใช้บัฟเฟอร์พิเศษจำนวนหนึ่ง ด้วยเหตุผลด้านความปลอดภัยฉันไม่ต้องการปิดเครื่องโดยสมบูรณ์ มันควรจะตั้งค่าที่เหมาะสม ฉันตั้งค่ามันเป็นสองเท่าของระยะเวลาที่สคริปต์ที่ใช้งานยาวนานที่สุดของฉันใช้สำหรับการทำให้สมบูรณ์ภายใต้เซิร์ฟเวอร์ระดับกลาง - ระดับความเครียด ถึงกระนั้นมันก็อาจล้มเหลวเสมอ ดังนั้นวิธีปฏิบัติที่ดีที่สุดคือการจัดการกับปัญหาการหมดเวลาสำหรับสคริปต์ที่ใช้เวลานานต่างหาก
Hafenkranich

185

ฉันมีปัญหาเดียวกันและแก้ไขได้โดยการเปลี่ยนค่าสำหรับพารามิเตอร์max_execution_timeในphp.iniเช่นนี้

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

ฉันหวังว่านี่จะช่วยคุณได้


1
ด้วยเหตุผลบางอย่าง ini_set ไม่ทำงาน แต่นั่นช่วยได้อย่างแน่นอน!
gabrjan

php.iniสามารถพบได้ใน/etc/php5/apache2/php.ini.... ฉันใช้ Ubuntu 13.04 ...
Enissay

ฉันมีปัญหาเดียวกันเมื่อติดตั้ง moodle บน WAMP แต่แก้การกำหนดค่าไฟล์ php.ini
มูฮัมหมัดฟาน

1
ต้องรีสตาร์ท apache หลังจากการเปลี่ยนแปลงใน php.ini
spideringweb

[php7] - sudo nano /etc/php/7.0/apache2/php.ini
Chris Lambrou

46

คำตอบทั้งหมดข้างต้นถูกต้อง แต่ฉันใช้วิธีง่ายๆในการหลีกเลี่ยงในบางกรณี

เพียงแค่ใส่คำสั่งนี้ในจุดเริ่มต้นของสคริปต์ของคุณ:

set_time_limit(0);

9
นี่ไม่แนะนำเลย
ฉันเป็นคนที่โง่ที่สุดใน

1
การ จำกัด เวลาปิดใช้งานไม่ได้ป้องกันการวนซ้ำไม่สิ้นสุดดังนั้นตั้งค่าขีด จำกัด (มากกว่า) เสมอ
bimlas

@IamtheMostStupidPerson ทำไมล่ะ ถ้าคุณใช้เป็น localhost
Fernando Torres

23

ฉันวิ่งเข้าไปในปัญหานี้ขณะที่การอัพเกรดเพื่อWordPress 4.0 โดยค่าเริ่มต้น WordPress จำกัด เวลาดำเนินการสูงสุดเป็น 30 วินาที

เพิ่มรหัสต่อไปนี้ไปยังไฟล์. htaccessของคุณในไดเรกทอรีรากของการติดตั้ง WordPressของคุณเพื่อข้ามค่าเริ่มต้น

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes

18

แก้ไขphp.ini

ค้นหาบรรทัดนี้:

max_execution_time

เปลี่ยนค่าเป็น 300:

max_execution_time = 300

300 หมายถึงเวลาดำเนินการ 5 นาทีสำหรับคำขอ http


16

สคริปต์ของคุณหมดเวลาแล้ว ดูฟังก์ชั่นset_time_limit ()เพื่อเพิ่มเวลาในการประมวลผล หรือโปรไฟล์สคริปต์เพื่อให้ทำงานได้เร็วขึ้น :)


1
@HarshaMV เขาหมายถึงการใช้โปรไฟล์ประสิทธิภาพเพื่อกำหนดสาเหตุที่สคริปต์เริ่มต้นช้าและเพิ่มประสิทธิภาพรหัสของคุณเพื่อปรับปรุงเวลาดำเนินการ สิ่งนี้อาจเป็นประโยชน์หรือไม่ก็ได้ขึ้นอยู่กับว่าเกิดปัญหาคอขวด (CPU กับ Disk I / O เทียบกับเครือข่าย)
Dan Bechard

12

หากทั้งหมดข้างต้นไม่ได้ผลสำหรับคุณให้เพิ่ม.htaccessไฟล์ไปยังไดเรกทอรีที่สคริปต์ของคุณอยู่และวางไว้ข้างใน

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

นี่คือวิธีที่ผมแก้ปัญหาของฉันไม่ini_set('max_execution_time', 86400);ว่ามิได้set_time_limit(86400)แก้ปัญหาของฉัน แต่วิธีนี้ทิ้งได้


1
มันทำงานได้ในกรณีของฉัน ขอบคุณ. แทนที่ M ด้วย G สำหรับ GB
Web_Developer

11

เราสามารถแก้ปัญหานี้ได้ 3 วิธี

1) การใช้ไฟล์ php.ini

2) การใช้ไฟล์. htaccess

3) การใช้ไฟล์ Wp-config.php (สำหรับ Wordpress)


8

คุณสามารถลบข้อ จำกัด โดยตั้งเป็นศูนย์โดยเพิ่มบรรทัดนี้ที่ด้านบนของสคริปต์ของคุณ:

<?php ini_set('max_execution_time', 0); ?>

7

/etc/php5(your php version)/apache2/php.iniตามเส้นทาง

เปิดและตั้งค่าเป็นค่าmax_execution_timeที่ต้องการ


สำหรับผู้ให้บริการโฮสติ้งบางรายคุณอาจต้องตั้งค่าเป็น /home/ [ชื่อผู้ใช้] /.php/7.0/phprc
expertCode

7

อาจตรวจสอบสิ่งที่คุณเปลี่ยนแปลงภายใต้ไฟล์ php.ini ตัวอย่างเช่นฉันเปลี่ยน"; intl.default_locale ="เป็น"; intl.default_locale = en_utf8"เพื่อเปิดใช้งาน "Internationalization extension (Intl)" โดยไม่ต้องเพิ่ม"extension = php_intl.dll"ข้อผิดพลาดเดียวกันนี้เกิดขึ้น ดังนั้นฉันขอแนะนำให้ตรวจสอบข้อผิดพลาดที่คล้ายกัน



5

ที่จะขยายของคุณmax_execution_timeคุณสามารถใช้อย่างใดอย่างหนึ่งหรือini_setset_time_limit

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);

!! แต่โปรดทราบว่าฟังก์ชั่นทั้งสองรีสตาร์ทยังนับเวลาสคริปต์ที่ได้ดำเนินการแล้ว

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//

ดังนั้นหากคุณต้องการตั้งค่าจำนวนเวลาสูงสุดที่แน่นอนของสคริปต์สามารถเรียกใช้คำสั่งของคุณจะต้องเป็นอันดับแรก

ความแตกต่างระหว่างทั้งสองฟังก์ชั่นคือ

  • set_time_limit ไม่ส่งคืนข้อมูลว่าสำเร็จหรือไม่ แต่จะส่งคำเตือนเมื่อเกิดข้อผิดพลาด
  • ini_setส่งคืนค่าเก่าเมื่อสำเร็จหรือเป็นเท็จเมื่อล้มเหลวโดยไม่มีการเตือน / ข้อผิดพลาด

5

คุณสามารถทำได้อย่างง่ายดายด้วย WHM เพิ่งถึง:

WHM -> Service Configuration -> การกำหนดค่า PHP

editor-> max_execution_time=30

(30 เป็นค่าเริ่มต้นให้เปลี่ยนเป็นค่าที่คุณต้องการ)


2

ฉันมีปัญหาเดียวกันในเว็บไซต์ WordPress ฉันเพิ่มในไฟล์. htaccess แล้วทำงานได้ดีสำหรับฉัน

php_value max_execution_time 6000000

0

ฉันได้ทำการเปลี่ยนแปลงบางอย่างในกรณีของฉันใน: xampp \ phpMyAdmin \ libraries \ config.default.php

ฉันได้ค้นหา: $cfg['ExecTimeLimit'] และเปลี่ยนค่าทางด้านขวา ...

คุณสามารถเปลี่ยนค่าของมือขวาเป็นค่าที่สูงกว่าเช่น '5000' และมันใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.