Belirli bir boyut sınırında başarısız olan yükleme bir sınırdır — bkz. 413 İstek gövdesi çok büyük. Sabit olmayan boyutlarda, yolun ortasında, bağlantı öylece düşerek başarısız olan yükleme ise yol üstünde bir yerdeki zaman aşımıdır.
Yükseltilecek zaman aşımları — hepsi
# nginx
client_body_timeout 300s;
client_max_body_size 512M;
send_timeout 300s;
fastcgi_read_timeout 300s;
proxy_read_timeout 300s;
; php
max_execution_time = 300
max_input_time = 300 ; the one that is forgotten - it covers the UPLOAD itself
max_input_time, PHP'nin isteği almaya ayıracağı süreyi sınırlar. max_execution_time'dan ayrıdır, varsayılanı düşüktür ve telefondan yapılan yavaş bir yüklemeyi öldüren şey odur.
Disk ve geçici alan
df -h /tmp /var/lib/php/tmp
grep upload_tmp_dir /etc/php/8.3/fpm/php.ini
Yükleme önce geçici bir dosyaya yazılır. O dosya sistemi dolarsa, yazma aktarımın ortasında başarısız olur ve bağlantı hiçbir yerde ileti bırakmadan düşer.
Neyin kaydedildiğine bakın
sudo tail -50 /var/log/nginx/error.log
sudo journalctl -u php8.3-fpm -n 50 --no-pager
client intended to send too large body, boyut sınırıdır. timed out ile upstream prematurely closed ise yukarıdaki zaman aşımlarıdır. Hiçbir kayıt yoksa, genelde tarayıcı ya da bir vekil sunucudan önce pes etmiştir.
Büyük dosyalar için doğru çözüm
Parçalı ya da sürdürülebilir yükleme, büyük bir dosyayı çok sayıda küçük istek olarak gönderir; böylece tek bir istek uzun sürmez ve kopan bağlantı baştan başlamak yerine kaldığı yerden devam eder. Birkaç yüz megabaytın üstündeki her şey için tek güvenilir yanıt budur.