Arkadaşlar merhaba, uzun süredir PHP ile uğraşıyorum ama büyük dosya yükleme konusunda kafamı duvarlara vuruyorum. Özellikle 100 MB üzeri videolar veya yedek dosyaları yüklemeye çalıştığımda sürekli timeout hatası alıyorum ya da yükleme hiç başlamıyor. php.ini ayarlarını değiştirdim, upload_max_filesize, post_max_size ve max_execution_time değerlerini artırdım ama yine de stabil bir çözüm bulamadım. Hosting firmam da bu ayarları değiştirebileceğimi söyledi, sunucu tarafında bir sınırlama yok. Siz bu sorunu nasıl çözüyorsunuz?
Ben genelde chunked upload yöntemini denedim, yani dosyayı parçalara bölüp tek tek yüklemek. Bunun için JavaScript tarafında bir File API kullandım, PHP arkada da parçaları birleştirdim. Ama bu sefer de parçaların sırası karışabiliyor ya da bir parça düşerse tüm işlem boşa gidiyor. Ayrıca çok fazla kaynak tüketiyor, sunucuda bellek sorunları yaşamaya başladım. Acaba daha basit bir yöntem var mı? Mesela direkt PHP ile dosyayı akış halinde işleyen bir kütüphane kullanan var mı aranızda?
Bir de şunu fark ettim, büyük dosyalarda bellek limitini aşmamak için ob_start() gibi tamponlama fonksiyonlarını kullanmak gerekiyor mu? Yoksa doğrudan move_uploaded_file() ile işi bitirebilir miyiz? Bu konuda tecrübesi olan varsa lütfen yazsın, çünkü projemde kullanıcıların 500 MB'a kadar dosya yüklemesine izin vermem gerekiyor ve mevcut yapıyla bu imkansız görünüyor. Alternatif olarak harici bir servis (örneğin Amazon S3) düşünüyorum ama onu da PHP ile entegre etmek ayrı bir dert. Sizin önerileriniz neler?
Ben genelde chunked upload yöntemini denedim, yani dosyayı parçalara bölüp tek tek yüklemek. Bunun için JavaScript tarafında bir File API kullandım, PHP arkada da parçaları birleştirdim. Ama bu sefer de parçaların sırası karışabiliyor ya da bir parça düşerse tüm işlem boşa gidiyor. Ayrıca çok fazla kaynak tüketiyor, sunucuda bellek sorunları yaşamaya başladım. Acaba daha basit bir yöntem var mı? Mesela direkt PHP ile dosyayı akış halinde işleyen bir kütüphane kullanan var mı aranızda?
Bir de şunu fark ettim, büyük dosyalarda bellek limitini aşmamak için ob_start() gibi tamponlama fonksiyonlarını kullanmak gerekiyor mu? Yoksa doğrudan move_uploaded_file() ile işi bitirebilir miyiz? Bu konuda tecrübesi olan varsa lütfen yazsın, çünkü projemde kullanıcıların 500 MB'a kadar dosya yüklemesine izin vermem gerekiyor ve mevcut yapıyla bu imkansız görünüyor. Alternatif olarak harici bir servis (örneğin Amazon S3) düşünüyorum ama onu da PHP ile entegre etmek ayrı bir dert. Sizin önerileriniz neler?