1
0
Fork 0

Revert lastInfoUpdate change to keep full comaptibility to current behavior

pull/9604/head
Nils Adermann 2021-01-12 17:51:26 +01:00
parent d665301368
commit f72ad485ef
1 changed files with 18 additions and 25 deletions

View File

@ -49,7 +49,6 @@ class CurlDownloader
CURLM_OUT_OF_MEMORY => array('CURLM_OUT_OF_MEMORY', 'You are doomed.'), CURLM_OUT_OF_MEMORY => array('CURLM_OUT_OF_MEMORY', 'You are doomed.'),
CURLM_INTERNAL_ERROR => array('CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!'), CURLM_INTERNAL_ERROR => array('CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!'),
); );
private $lastInfoUpdate = 0;
private static $options = array( private static $options = array(
'http' => array( 'http' => array(
@ -241,7 +240,6 @@ class CurlDownloader
} }
$this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $curlHandle)); $this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $curlHandle));
$this->lastInfoUpdate = 0;
// TODO progress // TODO progress
return (int) $curlHandle; return (int) $curlHandle;
@ -392,35 +390,30 @@ class CurlDownloader
} }
} }
if (microtime(true) - $this->lastInfoUpdate > 0.1) { foreach ($this->jobs as $i => $curlHandle) {
$this->lastInfoUpdate = microtime(true); if (!isset($this->jobs[$i])) {
continue;
}
$curlHandle = $this->jobs[$i]['curlHandle'];
$progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo);
foreach ($this->jobs as $i => $curlHandle) { if ($this->jobs[$i]['progress'] !== $progress) {
if (!isset($this->jobs[$i])) { $this->jobs[$i]['progress'] = $progress;
continue;
}
$curlHandle = $this->jobs[$i]['curlHandle'];
$progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo);
if ($this->jobs[$i]['progress'] !== $progress) { if (isset($this->jobs[$i]['options']['max_file_size'])) {
$this->jobs[$i]['progress'] = $progress; // Compare max_file_size with the content-length header this value will be -1 until the header is parsed
if ($this->jobs[$i]['options']['max_file_size'] < $progress['download_content_length']) {
if (isset($this->jobs[$i]['options']['max_file_size'])) { throw new MaxFileSizeExceededException('Maximum allowed download size reached. Content-length header indicates ' . $progress['download_content_length'] . ' bytes. Allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes');
// Compare max_file_size with the content-length header this value will be -1 until the header is parsed
if ($this->jobs[$i]['options']['max_file_size'] < $progress['download_content_length']) {
throw new MaxFileSizeExceededException('Maximum allowed download size reached. Content-length header indicates ' . $progress['download_content_length'] . ' bytes. Allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes');
}
// Compare max_file_size with the download size in bytes
if ($this->jobs[$i]['options']['max_file_size'] < $progress['size_download']) {
throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . $progress['size_download'] . ' of allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes');
}
} }
// TODO progress // Compare max_file_size with the download size in bytes
if ($this->jobs[$i]['options']['max_file_size'] < $progress['size_download']) {
throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . $progress['size_download'] . ' of allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes');
}
} }
}
// TODO progress
}
} }
} }