- Konu sahibi
- #1
.htaccess ile PHP çalışma süresi sınırı
PHP kodunun en fazla kaç saniye çalışacağını .htaccess üzerinden ayarlamak için, sunucu PHP’yi Apache modülü olarak çalıştırıyorsa aşağıdaki satırı kullanabilirsiniz:
Kod:
php_value max_execution_time 300
Bu örnek, PHP’nin kendi zaman ölçümüne göre sınırı 300 saniye yapar; tüm HTTP isteğinin duvar saatiyle kesin 300 saniye süreceği anlamına gelmez. Ancak bu yöntem PHP-FPM veya FastCGI kullanan sunucularda genellikle çalışmaz. Böyle bir altyapıda değişiklik php.ini, PHP-FPM havuz ayarı veya hosting paneli üzerinden yapılmalıdır.
Önce hangi sınırı değiştirdiğinizi ayırın
PHP’nin
max_execution_time ayarı, betiğin PHP tarafından ölçülen yürütme süresini sınırlar. Beklemelerin hesaba katılması işletim sistemi ve PHP derleme modeline göre değişebilir. Apache’nin TimeOut ayarı ise istemciye veri gönderme, istemciden veri alma veya CGI çıktısını bekleme gibi HTTP sunucusu işlemleriyle ilgilidir. Bu nedenle uzun süren bir PHP işlemi için yalnızca Apache TimeOut değerini değiştirmek her zaman yeterli değildir.Apache belgelerinde
TimeOut yönergesinin .htaccess içinde değil, sunucu veya sanal konak yapılandırmasında kullanılabildiği belirtilir. Bu yüzden aşağıdaki satırı doğrudan .htaccess içine eklemek geçerli değildir:
Kod:
TimeOut 300
PHP betiği bir dış servisten yanıt bekliyor, büyük bir dosya yüklüyor veya veritabanı sorgusunda bekliyorsa ayrıca ilgili istemci, proxy, PHP-FPM ve uygulama katmanı zaman aşımı da devreye girebilir. Tek bir değeri artırmak bütün bu sınırları otomatik olarak değiştirmez.
Apache modülünde uygulama örneği
Apache modülüyle çalışan PHP için site kök dosyasına şu en küçük örneği ekleyin:
Kod:
php_value max_execution_time 300
Önce PHP’nin gerçekten Apache modülü olduğunu doğrulayın; modül adı tahminiyle koşullu blok eklemek, uygulanmayan ayarı gizleyebilir. PHP-FPM/FastCGI için panelin desteklediği PHP ayarını veya etkinse
.user.ini içinde max_execution_time = 300 değerini kullanın. Sağlayıcının yönetici düzeyinde kilitlediği sınırlar kullanıcı ayarıyla aşılamaz.- .htaccess dosyasının bir yedeğini alın ve satırları site kök dizinine ekleyin.
- Erişimini kısıtladığınız geçici bir PHP tanılama dosyasında
PHP_SAPIveini_get("max_execution_time")değerlerini okuyun. Tam phpinfo çıktısını herkese açık yayımlamayın. - SAPI
apache2handlergösteriyorsaphp_valueyöntemi kullanılabilir.fpm-fcgiveyacgi-fcgigösteriyorsa değişikliği panelden veya PHP-FPM yapılandırmasından yapın. - Değişiklikten sonra uzun süren isteği yeniden çalıştırın ve PHP hata günlüğünü kontrol edin.
max_execution_time değeri beklediğiniz şekilde görünür. .htaccess ekledikten sonra doğrudan 500 Internal Server Error oluşursa en yaygın neden php_value yönergesinin o PHP çalışma modelinde desteklenmemesidir. Satırı kaldırın; ardından hosting panelinde PHP ayarları, php.ini veya PHP-FPM yapılandırması üzerinden ilerleyin.Hangi ayar nerede değiştirilir?
Aşağıdaki ayrım, yanlış dosyada değişiklik yapmayı önler:
| İhtiyaç | İlgili ayar | Tipik konum |
|---|---|---|
| PHP kodunun çalışma süresi | max_execution_time | .htaccess, php.ini veya panel |
| Apache’nin I/O bekleme süresi | TimeOut | httpd.conf veya VirtualHost |
| İstek gövdesini alma süresi | RequestReadTimeout | Apache sunucu veya VirtualHost yapılandırması |
| PHP-FPM havuzunun isteği sonlandırması | FPM havuz zaman aşımı ayarları | Sunucu yapılandırması veya hosting paneli |
AllowOverride Options yetkisi gerekir; bu sunucu ayarını sağlayıcınız doğrulamalıdır. Dosya okunuyor olsa bile belirli bir yönergeye izin verilmemişse ayar uygulanmayabilir.Sık yapılan hatalar
Apache TimeOut ile PHP süresini aynı sanmak
TimeOut HTTP sunucusunun bekleme davranışını düzenler; PHP’nin çalışma süresi için öncelikle max_execution_time kontrol edilmelidir.PHP-FPM sunucusunda php_value kullanmak
PHP-FPM/FastCGI ortamında .htaccess içindeki
php_value satırı çalışmayabilir veya 500 hatasına yol açabilir. Bu durumda satırı kaldırıp gerçek PHP çalışma modeline uygun yapılandırma noktasını kullanın.Süreyi artırarak asıl problemi gizlemek
Uzun süren sorgu, dış API beklemesi veya büyük dosya işlemi varsa süreyi sürekli yükseltmek yerine işlemi parçalara ayırmak, sorguyu iyileştirmek veya arka plan görevine taşımak daha doğru olabilir. Web isteğini gereksiz yere uzun süre açık bırakmak, sunucu kaynaklarının tükenmesine neden olabilir.
Sık sorulan sorular
.htaccess değişikliğinden sonra site 500 hatası veriyor, ne yapmalıyım?
Önce eklediğiniz
php_value satırını kaldırın ve hata günlüğünü kontrol edin. Bu durum PHP-FPM/FastCGI kullanımından veya ilgili yönergeye izin verilmemesinden kaynaklanabilir; hata günlüğündeki gerçek nedeni esas alın.PHP dosyasında set_time_limit kullanmak daha mı doğru?
Yalnızca belirli bir betiğin süresini değiştirmek istiyorsanız uygulanabilir; fakat hosting politikaları, PHP yapılandırması veya üst katmandaki HTTP zaman aşımları tarafından sınırlandırılabilir. Bu nedenle gerçek etkin değeri test ederek doğrulamak gerekir.