Önemli hata: 30 saniyelik maksimum yürütme süresi aşıldı


397

Çevrimiçi bir kaynaktan bir JSON dosyası indiriyorum ve döngü boyunca çalıştığında bu hatayı alıyorum:

Önemli hata: 24. satırdaki C: \ wamp \ www \ temp \ fetch.php dosyasında 30 saniyelik maksimum yürütme süresi aşıldı


11
60 saniyenin maksimum yürütme süresinin olası kopyası aşıldı, bu da zaten diğer üçünün kopyası. Lütfen sormadan önce arama işlevini kullanın.
Gordon

"Set_time_limit () işlevi ve max_execution_time yapılandırma yönergesi yalnızca komut dosyasının yürütme süresini etkiler. Sistem (), akış işlemleri, veritabanı sorguları vb. Kullanarak sistem çağrıları gibi komut dosyasının yürütülmesi dışında gerçekleşen etkinlik için harcanan her zaman komut dosyasının çalıştığı maksimum süreyi belirlerken dahil edilmez. Bu Windows için geçerli değildir "PHP Belgelerinden
Jacob Sánchez

Yanıtlar:


722

Döngünüz sonsuz olabilir. Değilse, maksimum yürütme süresini şu şekilde uzatabilirsiniz:

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

ve

set_time_limit(300);

zaman sınırını geçici olarak uzatmak için kullanılabilir.


95
set_time_limit (300), zaman sınırını geçici olarak uzatmak için kullanılabilir.
Omn

Bu yalnızca bir komut dosyası için mi ayarlanmış yoksa aynı sunucuda bundan sonra yürütülen diğer komut dosyalarının tümünü mi etkileyecek?
Rao

1
@Rao evet, bu sadece bir senaryo için olacak. Tüm komut dosyaları için bunu yapmak için php.ini dosyasında değiştirmeniz gerekir. ayrıca set_time_limit (0) da yapabilirsiniz; senaryonun sonsuza dek ya da uzun süre çalışmasını istiyorsanız
Haseeb

31
ini_set ('max_execution_time', 0); // sınır yok
Junaid Atari

3
@sangam Belirli bir miktar ekstra ara belleğe izin verirken bu sınırı olabildiğince düşük tutmanın en iyi yöntem olduğunu söyleyebilirim. Güvenlik nedeniyle tamamen kapatmak istemem. Makul olarak ayarlanmalıdır. Aslında en uzun süredir çalışan betiğimin orta sunucu-stres düzeyinde tamamlanması için gereken sürenin iki katına ayarladım. Yine de her zaman başarısız olabilir. Bu nedenle en iyi uygulama, zaman alan komut dosyaları için ayrı ayrı zaman aşımı sorunları ile ilgilenmektir.
Hafenkranich

185

Ben aynı sorunu vardı ve param için değerini değiştirerek bunu çözmüş max_execution_timede php.iniböyle:

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)

Umarım bu size yardımcı olabilir.


1
Nedense ini_set çalışmıyor ama bu kesinlikle yardımcı oluyor!
gabrjan

php.inibulunabilir /etc/php5/apache2/php.ini.... Ben ubuntu kullanıyorum 13.04 ...
Enissay

Wamp üzerinde moodle yüklerken aynı sorun vardı ama php.ini dosyasını yapılandırma çözüldü
Muhammed Irfan


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

46

Yukarıdaki tüm cevaplar doğrudur, ancak bazı durumlarda kaçınmak için basit bir yol kullanıyorum.

Bu komutu komut dosyanızın başına koymanız yeterlidir:

set_time_limit(0);

9
Bu hiç tavsiye edilmez
Ben en aptal insanım

1
Kapanma süresi sınırı sonsuz döngülere karşı koruma sağlamaz, bu nedenle her zaman (daha büyük) bir sınır oluşturun.
bimlas

@IamtheMostStupidPerson Neden olmasın? Localhost olarak kullanırsanız
Fernando Torres

23

WordPress 4.0'a yükseltirken bu sorunla karşılaştım . WordPress varsayılan olarak maksimum yürütme süresini 30 saniye ile sınırlar.

Varsayılanı aşmak için WordPress Kurulumunuzun kök dizinindeki .htaccess dosyanıza aşağıdaki kodu ekleyin .

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

18

Düzenleme php.ini

Bu satırı bulun:

max_execution_time

Değerini 300 olarak değiştirin:

max_execution_time = 300

300, http isteği için 5 dakikalık yürütme süresi anlamına gelir.


16

Betiğiniz zaman aşımına uğradı. Yürütme süresini artırmak için set_time_limit () işlevine bakın. Veya daha hızlı çalışmasını sağlamak için komut dosyasını profilinize alın :)


1
@HarshaMV Komut dosyasının neden yavaş başladığını belirlemek için bir performans profili kullanmak ve yürütme süresini iyileştirmek için kodunuzu optimize etmek anlamına gelir. Darboğazın ne olduğuna bağlı olarak bu yararlı olabilir veya olmayabilir (CPU - Disk G / Ç ve Ağ).
Dan Bechard

12

yukarıdakilerin tümü sizin için işe yaramadıysa .htaccess, komut dosyanızın bulunduğu dizine bir dosya ekleyin ve bunu içine koyun

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

bu benim sorunumu çözdüm, ne sorunumu ne ini_set('max_execution_time', 86400);de set_time_limit(86400)çözdüm, ama .htaccess yöntemi yaptı.


1
Benim durumumda çalışıyor. Teşekkür ederim. GB yerine M yerine G
Web_Developer

11

Bu sorunu 3 farklı şekilde çözebiliriz.

1) php.ini dosyasını kullanma

2) .htaccess dosyasını kullanma

3) Wp-config.php dosyasını kullanma (Wordpress için)


8

Bu satırı komut dosyanızın üstüne ekleyerek sıfıra sıfıra ayarlayarak kaldırabilirsiniz:

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

7

Yolu takip et /etc/php5(your php version)/apache2/php.ini.

Açın ve değerini max_execution_timeistediğiniz bir değere ayarlayın .


Bazı barındırma sağlayıcıları sitesinde /home/[username]/.php/7.0/phprc ayarlanmış gerekebilir
expertCode

7

Belki php.ini dosyası altında değiştirdiğiniz herhangi bir şeyi kontrol edin. Örneğin , "uluslararasılaştırma uzantısı (Intl)" ' nı "extension = php_intl.dll" eklemeden etkinleştirmek için "; intl.default_locale =" yerine "; intl.default_locale = en_utf8" olarak değiştirdim, sonra aynı hata oluştu. Bu yüzden benzer hataları kontrol etmenizi öneririm.



5

Uzatmak için veya seçeneğini max_execution_timekullanabilirsiniz .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);

!! Ancak, her iki işlevin de yeniden başlatıldığını ve ayrıca komut dosyasının yürütülmesi için geçen zaman sayımının da

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

komut dosyasının çalışabileceği tam maksimum süreyi ayarlamak istiyorsanız, komutunuzun çok önce olması gerekir.

Bu iki işlev arasındaki farklar

  • set_time_limit başarılı olup olmadığı hakkında bilgi döndürmez, ancak hata durumunda bir uyarı gönderir.
  • ini_setherhangi bir uyarı / hata olmadan başarı durumunda eski değeri veya başarısızlık durumunda false değerini döndürür

5

WHM ile kolayca yapabilirsiniz. Sadece şunu yapmalıyım:

WHM -> Hizmet Yapılandırması -> PHP yapılandırması

editörlüğünüzü> max_execution_time=30

(30 varsayılan değerdir, istediğiniz herhangi bir değere değiştirin)


2

WordPress sitesinde aynı sorun var, .htaccess dosyasına ekledikten sonra benim için iyi çalışıyor.

php_value max_execution_time 6000000

0

Benim durumumda bazı değişiklikler yaptım: xampp \ phpMyAdmin \ libraries \ config.default.php

i aradım: $cfg['ExecTimeLimit'] ve sağ taraftaki değeri değiştirmek ...

Sağ El Değerini '5000' gibi daha yüksek bir değere değiştirebilirsiniz . ve çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.