Bir php script sunucuya filmlerdeki gibi büyük dosyaları indirmek için mümkün mü?

6 Cevap

Benim komut dosyası sadece 2 mb indirir. Ben çünkü bu sunucuda kısıtlama çeşit olduğunu düşünüyorum. Benim komut dosyası bu sunucu üzerinde bulunan ve web (resim ve film gibi) dosyalarını indirmek için. Ama filmler başarısız; sadece iki mb sunucuya yüklenmiş olsun. Ben bu konuda bir şey yapabilir miyim?

6 Cevap

Eklemeyi deneyin:

php_value upload_max_filesize 15M

Senin. Htaccess (en azından apache kullanıyorsanız). Yani 15mb olduğunu. Varsayılan genellikle 2mb ayarlanır.

Bu benim için iyi çalıştı, ama aynı zamanda zaman sınırları isabet olabileceğini işaret doğru ftrotter olduğunu sahiptir.

PHP güvenli modda çalışıyorsa aradığınız deneyebilirsiniz:

 set_time_limit($seconds);

Zamanın uzunluğunu değiştirmek için PHP komut dosyası çalıştırmak için izin verilir. Aksi takdirde eğer php.ini max_execution_time değiştirmek zorunda kalacak.

Burada sahip olabilecek çeşitli sorunlar vardır.

Php.ini dosyasına yakın bir göz atın.

Sizin için çok büyük değerlere sahip olduğunu, örneğin belirli olmak istiyorum

max_execution_time memory_limit

you might even consider default_socket_timeout

Eğer herhangi bir komut verir hata veya syslog raporları (veya pencere eşdeğeri) dahil eğer bize yardımcı olacak

HTH, -FT

Ayrıca hosting üzerinde iseniz, bazı sağlayıcılar uyarı olmadan uzun süre çalışan süreçleri öldürmek olacağını unutmayın.

Sen, küçük parçalar tek file_get_contents çağrısı değil tüm dosyayı dosyalarını okumak gerekir. Eğer onları indirmek nasıl bir örnek sağlar. Biz bellek tüketen parçalarını kaldırmak için komut dosyasını değiştirmek için yardımcı olacaktır.

Bu benim nasıl olduğunu:

$filename = 'file';
$fp = fopen($filename,'w+');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $the_link);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

Ayrıca, ben. Htaccess dosyası ile max_execution_time ve upload_max_filesize ile değişti.

Evet, ama bunu devam böylece komut dosyası yazmak gerekiyor. Bu sunucu tarafından ilk kapatma sonra devam etmek CURLOPT_RANGE kullanmak oldukça ileri.

Sonra bir cron job ile zaman zaman da indirme sayfası arama ve yükleme hala sürüyor ya da sonlandırıldı olmadığını görmek için CURL kod etrafında bir sürü kullanın.

Bu, tek bir HTTP yanıt olarak büyük dosyaları indirebilirsiniz çok düşüktür.