Kesalahan fatal: Waktu eksekusi maksimum 30 detik terlampaui

397

Saya mengunduh file JSON dari sumber online dan dan ketika dijalankan melalui loop saya mendapatkan kesalahan ini:

Kesalahan fatal: Waktu eksekusi maksimum 30 detik terlampaui dalam C: \ wamp \ www \ temp \ fetch.php on line 24

Harsha MV
sumber
11
kemungkinan duplikat dari waktu eksekusi maksimum melebihi 60 detik yang merupakan duplikat dari tiga lainnya. Silakan gunakan fungsi pencarian sebelum bertanya.
Gordon
"Fungsi set_time_limit () dan direktif konfigurasi max_execution_time hanya memengaruhi waktu eksekusi skrip itu sendiri. Setiap waktu yang dihabiskan untuk aktivitas yang terjadi di luar pelaksanaan skrip seperti panggilan sistem menggunakan sistem (), operasi aliran, permintaan basis data, dll. tidak disertakan ketika menentukan waktu maksimum skrip telah berjalan. Ini tidak benar pada Windows "Dari Dokumentasi PHP
Jacob Sánchez

Jawaban:

722

Lingkaran Anda mungkin tidak ada habisnya. Jika tidak, Anda dapat memperpanjang waktu eksekusi maksimum seperti ini:

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

dan

set_time_limit(300);

dapat digunakan untuk sementara waktu memperpanjang batas waktu.

Michiel Pater
sumber
95
set_time_limit (300) dapat digunakan untuk sementara waktu memperpanjang batas waktu.
Omn
Apakah ini ditetapkan hanya untuk satu skrip atau akan memengaruhi semua skrip lain yang dieksekusi setelah skrip ini di server yang sama?
Rao
1
@Rao ya, ini hanya untuk satu skrip itu. Untuk membuatnya untuk semua skrip, Anda perlu mengubahnya di file php.ini. Anda juga bisa melakukan set_time_limit (0); jika Anda ingin skrip berjalan selamanya, atau untuk waktu yang lama
Haseeb
31
ini_set ('max_execution_time', 0); // tanpa batas
Junaid Atari
3
@samam aku akan mengatakan itu praktik terbaik, untuk menjaga batas ini serendah mungkin sambil memungkinkan sejumlah buffer tambahan. Karena alasan keamanan saya tidak ingin mematikannya sepenuhnya. Itu harus ditetapkan masuk akal. Saya benar-benar mengaturnya dua kali lipat dari jumlah waktu yang dibutuhkan untuk menjalankan skrip terpanjang saya di bawah tingkat stres server sedang. Tetap saja itu selalu bisa gagal. Jadi praktik terbaik adalah menangani masalah time-out untuk skrip yang memakan waktu secara terpisah.
Hafenkranich
185

Saya memiliki masalah yang sama dan menyelesaikannya dengan mengubah nilai param max_execution_timedi php.ini, seperti 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)

Saya harap ini bisa membantu Anda.

Güilber J. Castillo
sumber
1
Untuk beberapa alasan ini_set tidak berfungsi tetapi itu pasti membantu!
gabrjan
php.inidapat ditemukan di /etc/php5/apache2/php.ini.... Saya menggunakan ubuntu 13.04 ...
Enissay
Saya memiliki masalah yang sama ketika menginstal moodle di wamp tetapi menyelesaikan konfigurasi file php.ini
Muhammad Irfan
1
Perlu me-restart apache setelah perubahan di php.ini
spideringweb
[php7] - sudo nano /etc/php/7.0/apache2/php.ini
Chris Lambrou
46

Semua jawaban di atas benar, tetapi saya menggunakan cara sederhana untuk menghindarinya dalam beberapa kasus.

Masukkan saja perintah ini di awal skrip Anda:

set_time_limit(0);
Massa
sumber
9
Ini sama sekali tidak direkomendasikan
saya Orang yang Paling Bodoh
1
Batas waktu dimatikan tidak melindungi terhadap loop tak terbatas, jadi selalu atur batas (lebih besar).
bimlas
@IamtheMostStupidPerson Mengapa tidak? Jika Anda menggunakannya sebagai localhost
Fernando Torres
23

Saya mengalami masalah ini saat meningkatkan ke WordPress 4.0 . Secara default WordPress membatasi waktu eksekusi maksimum hingga 30 detik.

Tambahkan kode berikut ke file .htaccess Anda di direktori root Anda dari Instalasi WordPress Anda untuk over-ride default.

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes
Fahim Hossain
sumber
18

Edit php.ini

Temukan baris ini:

max_execution_time

Ubah nilainya menjadi 300:

max_execution_time = 300

300 berarti 5 menit waktu eksekusi untuk permintaan http.

Jamil Ahmed
sumber
16

Skrip Anda kehabisan waktu. Lihatlah fungsi set_time_limit () untuk mempercepat waktu eksekusi. Atau profil skrip untuk membuatnya berjalan lebih cepat :)

tlenss
sumber
1
@HarshaMV Dia berarti menggunakan profil kinerja untuk menentukan mengapa skrip lambat untuk memulai, dan mengoptimalkan kode Anda untuk meningkatkan waktu eksekusi. Ini mungkin bermanfaat atau tidak, tergantung pada apa yang menjadi hambatannya (CPU vs. Disk I / O vs. Network).
Dan Bechard
12

jika semua hal di atas tidak berhasil, tambahkan .htaccessfile ke direktori tempat skrip Anda berada dan letakkan di dalamnya

<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 adalah cara saya memecahkan masalah saya, tidak ini_set('max_execution_time', 86400);juga set_time_limit(86400)memecahkan masalah saya, tetapi metode .htaccess melakukannya.

Nassim
sumber
1
Ini berfungsi dalam kasus saya. Terima kasih. Ganti M dengan G untuk GB
Web_Developer
11

Kita dapat memecahkan masalah ini dengan 3 cara berbeda.

1) Menggunakan file php.ini

2) Menggunakan file .htaccess

3) Menggunakan file Wp-config.php (untuk Wordpress)

KarSho
sumber
8

Anda dapat menghapus batasan dengan menetapkannya menjadi nol dengan menambahkan baris ini di bagian atas skrip Anda:

<?php ini_set('max_execution_time', 0); ?>
Mwangi Thiga
sumber
7

Ikuti jalannya /etc/php5(your php version)/apache2/php.ini.

Buka dan atur nilainya max_execution_timemenjadi yang diinginkan.

Suchit kumar
sumber
Pada penyedia hosting tertentu, Anda mungkin perlu mengaktifkan /home/[username[/.php/7.0/phprc
expertCode
7

Mungkin memeriksa segala hal yang telah Anda ubah di bawah file php.ini. Misalnya saya mengubah "; intl.default_locale =" menjadi "; intl.default_locale = en_utf8" untuk mengaktifkan "ekstensi internasionalisasi (Intl)" tanpa menambahkan "extension = php_intl.dll" maka kesalahan yang sama terjadi. Jadi saya sarankan untuk memeriksa kesalahan yang sama.

Mike G
sumber
5

Tingkatkan waktu eksekusi skrip Anda dengan menambahkan baris berikut di atas skrip PHP.

ini_set('max_execution_time', 120); //120 seconds = 2 minutes

Referensi diambil dari Meningkatkan Waktu Eksekusi Script PHP

JoyGuru
sumber
5

Untuk memperpanjang Anda, max_execution_timeAnda dapat menggunakan salah satu ini_setatau set_time_limit.

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

!! Tetapi perlu diketahui bahwa, kedua fungsi restart juga menghitung skrip waktu telah diambil untuk mengeksekusi

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)
//

jadi jika Anda ingin mengatur jumlah maksimum skrip waktu yang dapat dijalankan, perintah Anda harus menjadi yang pertama.

Perbedaan antara kedua fungsi tersebut adalah

  • set_time_limit tidak mengembalikan info apakah itu berhasil tetapi akan memberikan peringatan kesalahan.
  • ini_setmengembalikan nilai lama pada kesuksesan, atau false pada kegagalan tanpa peringatan / kesalahan
Buksy
sumber
5

Anda dapat melakukannya dengan mudah dengan WHM. Baru saja ke:

WHM -> Konfigurasi Layanan -> konfigurasi PHP

editor-> max_execution_time=30

(30 secara default mengubahnya ke nilai apa pun yang Anda inginkan)

pembayaran
sumber
2

Saya memiliki masalah yang sama di situs WordPress, saya menambahkan file .htaccess kemudian bekerja dengan baik untuk saya.

php_value max_execution_time 6000000
Ankit K Gupta
sumber
0

Saya telah membuat beberapa perubahan dalam kasus saya di: xampp \ phpMyAdmin \ libraries \ config.default.php

saya telah mencari: $cfg['ExecTimeLimit'] dan mengubah nilai di sisi kanan ...

Anda dapat mengubah Nilai Tangan Kanan ke nilai yang lebih tinggi, seperti '5000'. dan itu berhasil.

Imad Ullah
sumber