Otrzymuję 30-sekundowy błąd limitu czasu, ponieważ kod nadal sprawdza, czy plik ma ponad 5 MB, gdy jest pod. Kod jest przeznaczony do odrzucania plików powyżej 5 MB, ale muszę również przestać je wykonywać, gdy plik ma mniej niż 5 MB. Czy istnieje sposób sprawdzenia porcji transferu plików, aby sprawdzić, czy jest pusty? Obecnie używam tego przykładu przez DaveRandom:PHP Zatrzymaj odczytywanie plików zdalnych po ich całkowitym pobraniu
PHP Stop Remote File Download if it Exceeds 5mb
Kod przez DaveRandom:
$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
}
Pokaż kod, który masz do tej pory, w sposób, w jaki próbujesz go użyć. – davidethell
im przy użyciu dokładnie tego samego kodu w odpowiedzi DaveRandom. to pierwsza odpowiedź: http://stackoverflow.com/questions/13963158/php-stop-remote-file-download-if-it-exceeds-5mb – webdev
Rozumiem to, ale dobrą praktyką w SO jest uwzględnienie część kodu w tym poście, aby to pytanie można było zrozumieć samodzielnie. – davidethell