PHP yüklenenler vakit bulunabilir miyim?

10 Cevap php

Merhaba PHP oldukça yeni im, benim sunucusuna yüklenen çok büyük csv dosyaları için bir form oluşturduk. Tarayıcı nedeniyle büyük olma yükleme dosyası zaman aşımı olabilir ki bana bahsedilen bazı biri, bu doğru mu? ve eğer öyleyse, bu önlenebilir?

Yardımlarınız için teşekkürler!

10 Cevap

Aşağıdaki php.ini ayarları için uygun bir değer gerekir:

  1. max_input_time (not max_execution_time!)
  2. upload_max_filesize
  3. post_max_size

ve belki

  1. memory_limit

Değerleri çok küçük ise büyük yüklenenler başarısız olmasına neden olabilir bazı yapılandırma yönergeleri vardır:

PHP

  • Bir komut dosyası POST gibi, giriş verilerini ayrıştırmak için izin saniye max_input_time Maksimum zaman, GET ve yüklenenler dosya
  • Yüklenen bir dosyanın upload_max_filesize Maksimum boyut.
  • Izin sonrası verilerin post_max_size Maksimum boyut.

Apache

  • Sunucu bir istek için başarısız olmadan önce belirli olayların gerçekleşmesi için bekleme süresi TimeOut Tutar
  • LimitRequestBody istemciden gönderilen HTTP istek gövdesinin toplam uzunluğunu sınırlar

Bu daha biraz daha büyük olasılıkla vardır.

Php büyük dosya yüklenenler kötü kullanım etrafında çalışmak için iyi bir yolu, onları göndermeden önce parçalar halinde dosya bölünmüş olacak JUpload gibi bir aktarıcı kullanmaktır. Bu da yüklenirken düzgün bir ilerleme geribildirim almak kullanıcılar için yararı vardır, ve onlar tek seferde birden fazla dosya yükleyebilirsiniz.

Çok büyük dosyalar yüklerken, 4 yapılandırma değişkenlerini değiştirmek zorunda:

  • upload_max_filesize
  • post_max_size
  • memory_limit
  • time_limit

Zaman sınırı set_time_limit () ile zamanında artabilir.

Bir komut dosyası 30 saniye gibi bir şey için, varsayılan olarak, çalışmasına izin verilir. Bunu değiştirmek için set_time_limit() function kullanabilirsiniz. Kullanıcı büyük dosyaları yüklemek gerekir, Ayrıca, php.ini dosyasında post_max_size ve / veya upload_max_filesize değerlerini değiştirmeniz gerekir.

Sadece global zaman aşımı sınırı genişletmek istiyorsanız Ayrıca, php.ini de max-yürütme-zaman değiştirebilirsiniz.

Evet bu doğrudur. Dosya yükleme genel olarak bir POST isteği ve istekleri yoluyla yapılır aşımı tabidir. Sen uzun bir istek zaman aşımı için ortamı yeniden gerekir.

Sadece bu sorunlara neden olabilir zaman aşımı değil. Yüklenebilir dosya maksimum boyutuna bazı sınırlar vardır. Bu sınırlar php.ini dosyasında değiştirilebilir:

post_max_size
upload_max_filesize memory_limit

Ayrıntılar için http://uk.php.net/ini.core göz atın.

PHP indir aynı sorun var mı?

6 K her 5 hakkında bir sürü dosya - Ben bir büyük miktarda veri almak için PHP kopyasını () fonksiyonu kullanmaya çalıştı. Ben bir anda hepsini kopyalamak olamaz gibi görünüyor.

Benim cevabım doğrudan orijinal soru ile ilgili değil, ama size PHP komut önünde bir ters proxy yük dengeleyici varsa, yük dengeleyici büyük yüklenenler zaman aşımı ya da engelleyebilirsiniz. Eğer dosya yükleme desteği varsa her zaman yük dengeleyici yapılandırmasını denetleyin. Sadece PHP gibi, yüklemeler için en yük dengeleyici varsayılan ayarları oldukça küçük.

Ben aşağıdaki ayarları kullanarak bu sorunu çözmek mümkün oldu, farklı değerler kullanmak olabilir ama fikir olsun:

Benim sunucusu için, ben komut dizini içinde ". User.ini" dosyasında bu satırları koymak, sunucu sunucuya bir phpinfo ('user_ini.filename') yapmak eğer tükürmek olacak, farklı bir dosya için görünebilir Eğer değerler koymak gerekir dosya

max_execution_time = 1800
max_input_time = -1
post_max_size = 100M
upload_max_filesize = 100M
memory_limit = 256M