İşlem zaman aşımı nasıl artırılır? Video yüklemek istiyorum, ancak büyük boyutta videolar yüklenmedi?
Hata atıyor The process *** exceeded the timeout of 60 seconds.
İşlem zaman aşımı nasıl artırılır? Video yüklemek istiyorum, ancak büyük boyutta videolar yüklenmedi?
Hata atıyor The process *** exceeded the timeout of 60 seconds.
Yanıtlar:
Php.ini'nizdeki bazı ayarları değiştirmeniz gerekir:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds
PHP.ini'nizin bulunup bulunmadığı ortamınıza bağlıdır, daha fazla bilgi: http://php.net/manual/en/ini.list.php
Bunu kullanarak çalışma zamanında da yapabilmelisiniz
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
veya vhost-config'inizde
php_admin_value max_execution_time 10000
DÜŞÜK küresel bir yürütme süresi sınırına sahip olmak, çok güvenilir olmayan uygulamalardaki performans nedenleriyle çoğunlukla iyi bir fikirdir. Dolayısıyla, bu komut dosyalarının yalnızca kesinlikle zorunlu olan daha uzun süre çalışmasına izin vermek isteyebilirsiniz.
ps: post_max_size ve upload_max_filesize'ı unutmayın (ilk yanıtın zaten söylediği gibi)
Hannes'ın cevabını tamamlamak için.
Php.ini'nizdeki bazı ayarları değiştirmeniz gerekir:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must
Birisi sınırsız koymak isterse (nedenini bilmiyorum ama isterseniz), zamanı 0 olarak ayarlayabilirsiniz:
Php.ini'nizdeki bazı ayarları değiştirmeniz gerekir:
upload_max_filesize = 0
max_execution_time = 0
Ve php.ini dosyanızın nerede olduğunu bilmiyorsanız. Sunucunuzda bir "name.php" dosyası oluşturabilir ve şunu koyabilirsiniz:
<?php phpinfo(); ?>
Web sitenizde php.ini'nizin yapılandırmasını görebilirsiniz ve nerede olduğu işaretlenmiştir.
Php.ini dosyanıza erişemiyorsanız, iki seçeneğiniz daha vardır.
Bu satırı doğrudan "name.php" dosyanızda ayarlayabilirsiniz, ancak bu seçenek için upload_max_filesize için bulamıyorum:
set_time_limit(0);
Veya ".htaccess" içinde
php_value upload_max_filesize 0
php_value max_execution_time 0
Eğer yapmanız gereken sadece 1 veya 2 sayfaya özelse, set_time_limit'i kullanmanızı öneririm, böylece tüm uygulamayı etkilemez.
set_time_limit(some_values);
ama tabii ki bu 2 değer (post_max_size & upload_max_filesize) araştırmaya tabidir.
ya ini_set işlevi ile ayarlayabilirsiniz
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
veya doğrudan yukarıdaki Hannes yanıtı gibi php.ini dosyasında veya aşağıdaki gibi .htaccess olarak ayarlayın
php_value upload_max_filesize 2M
php_value post_max_size 20M
Microsoft IIS sunucusunu kullanıyorsanız , başkalarının bahsettiği php.ini ayarlarına ek olarak , IIS Sunucu Yöneticisi'nde PHP FastCGI uygulaması için yürütme zaman aşımı ayarlarını artırmanız gerekebilir:
Adım 1) IIS Sunucu Yöneticisi'ni açın (genellikle Başlat Menüsünde Sunucu Yöneticisi altında , ardından Araçlar / İnternet Bilgi Hizmetleri (IIS) Yöneticisi altında ).
Adım 2) Ana bağlantıya tıklayın (belirli bir alana özgü değildir).
Adım 3) IIS bölümü altında, FastCGI Ayarlarını bulun (aşağıda gösterilmiştir).
Adım 4) Orada, PHP uygulamasını sağ tıklayın ve Düzenle ... seçeneğini seçin .
Adım 5) Zaman aşımlarını kontrol edin (aşağıda gösterilmiştir).
Benim durumumda, buradaki varsayılan zaman aşımı 70 ve 90 saniyeydi; birincisi, 70 saniyeden uzun süren PHP betiklerinde 500 Dahili Sunucu Hatasına neden oluyordu .
Yukarıdaki yanıtlara ek olarak set_time_limit()işlevi kullanabilirsiniz :
http://php.net/manual/en/function.set-time-limit.php
0argüman olarak geçmek , komut dosyanızın zaman sınırı olmadan çalışmasını sağlar.
Özellikle PHP zaman aşımı hakkında soru sorduğunuzu biliyorum, ancak başka hiç kimsenin bahsetmediği, web sunucusunda da bir zaman aşımı olabileceği ve PHP zaman aşımına çok benzeyebileceği.
Yani denediyseniz:
Ve phpinfo () işlevi ile max_execution_time'ın gerçekten artırıldığını kontrol ettiniz, sonra bunu .htaccess'e eklemeyi deneyebilirsiniz, bu da Apache'nin zaman aşımına uğramamasını sağlayacaktır:
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Daha fazla bilgi burada: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
Önce php.inidosya yolunu kontrol edin phpinfo(); ve sonra değiştirilen PHP.INIparametreler:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
Apache yeniden başlatıldı
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Not : php.iniLinux'ta bulmak için komutu da kullanabilirsiniz .
locate `php.ini`
Php.ini'yi düzenleyemezseniz (örneğin, sunucunuzda) php.ini parametrelerini php kodunuzdan değiştirmeyi deneyebilirsiniz. Deneyin:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Bu işe yaramazsa, 'set_time_limit'i de aynı şekilde ayarlamayı deneyin, bunun ötesinde tek seçeneğinizin ev sahibinizle iletişim kurmak olduğunu söyleyebilirim. Bu ayarlar güvenli moddayken değiştirilemez.
Güvenli mod olup olmadığınızı test edin - değilse - zaman sınırını (Yerel Değer) istediğiniz şeye ayarlayın:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* Güvenli mod 'açık' ise bu şekilde zaman sınırı ayarlayamazsınız.
isteğe bağlı: php.ini hakkında yapılandırma ayarlarsanız ancak yine de yükleyemezseniz
-bu, hata kodunu kontrol etmek için php işlevidir
$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
echo $error_type[$status_code];
exit;
}
Zaman sınırını gerçekten arttırmak için önce mevcut değeri almayı tercih ederim. set_time_limither zaman zaman sınırını artırmıyor. Geçerli değer (örn gelen olursa php.iniveya eskiden kümesi) mevcut aramada kullanılan değerden yüksek set_time_limit, bu olacak azaltmak zaman sınırı!
Peki bunun gibi küçük bir yardımcının nesi var?
/**
* @param int $seconds Time in seconds
* @return bool
*/
function increase_time_limit(int $seconds): bool
{
return set_time_limit(max(
ini_get('max_execution_time'), $seconds
));
}
// somewhere else in your code
increase_time_limit(180);
Ayrıca bkz: PHP betiğinde max_execution_time alın