30 saniyelik bir zaman aşımı hatası alıyorum çünkü kod, dosyanın ne zaman bitmiş ise 5MB olup olmadığını kontrol ediyor. Kod 5mb üzerinden dosyaları reddetmek için tasarlanmıştır, ancak dosya 5mb'nin altında olduğunda da çalışmayı durdurmaya ihtiyacım var. Boş olup olmadığını görmek için dosya aktarma yığınını kontrol etmenin bir yolu var mı? Şu anda DaveRandom bu örneği kullanıyorum:PHP Uzaktan Dosyaları Dosyaları Tamamlandığında İndirme Tamamen İndirildi
PHP Stop Remote File Download if it Exceeds 5mb
Kod DaveRandom tarafından:
$url = 'http://www.spacetelescope.org/static/archives/images/large/heic0601a.jpg';
$file = '../temp/test.jpg';
$limit = 5 * 1024 * 1024; // 5MB
if (!$rfp = fopen($url, 'r')) {
// error, could not open remote file
}
if (!$lfp = fopen($file, 'w')) {
// error, could not open local file
}
// Check the content-length for exceeding the limit
foreach ($http_response_header as $header) {
if (preg_match('/^\s*content-length\s*:\s*(\d+)\s*$/', $header, $matches)) {
if ($matches[1] > $limit) {
// error, file too large
}
}
}
$downloaded = 0;
while ($downloaded < $limit) {
$chunk = fread($rfp, 8192);
fwrite($lfp, $chunk);
$downloaded += strlen($chunk);
}
if ($downloaded > $limit) {
// error, file too large
unlink($file); // delete local data
} else {
// success
}
göster Bizi şu ana kadar kullandığınız kodla kullanmaya çalışın. – davidethell
im aynı kodu DaveRandom'un cevabında kullanarak. ilk cevabı: http://stackoverflow.com/questions/13963158/php-stop-remote-file-download-if-it-excomes-5mb – webdev
Bunu anlıyorum, ama ilgili SO'yu dahil etmek için iyi bir uygulama. Bu yazıdaki kodun bir kısmı, bu sorunun kendi başına anlaşılabilmesini sağlar. – davidethell