Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

.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.
  1. .htaccess dosyasının bir yedeğini alın ve satırları site kök dizinine ekleyin.
  2. Erişimini kısıtladığınız geçici bir PHP tanılama dosyasında PHP_SAPI ve ini_get("max_execution_time") değerlerini okuyun. Tam phpinfo çıktısını herkese açık yayımlamayın.
  3. SAPI apache2handler gösteriyorsa php_value yöntemi kullanılabilir. fpm-fcgi veya cgi-fcgi gösteriyorsa değişikliği panelden veya PHP-FPM yapılandırmasından yapın.
  4. Değişiklikten sonra uzun süren isteği yeniden çalıştırın ve PHP hata günlüğünü kontrol edin.
Başarılı durumda site 500 hatası vermeden açılır ve PHP’nin etkin yapılandırmasında 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 ayarTipik konum
PHP kodunun çalışma süresimax_execution_time.htaccess, php.ini veya panel
Apache’nin I/O bekleme süresiTimeOuthttpd.conf veya VirtualHost
İstek gövdesini alma süresiRequestReadTimeoutApache 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
Apache’nin .htaccess içindeki PHP yönergelerini uygulayabilmesi için sunucu yapılandırmasında ilgili dizinde PHP belgesinin belirttiği 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.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.