summaryrefslogtreecommitdiff
path: root/include/functions.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-10-30 13:13:10 +0300
committerAndrew Dolgov <[email protected]>2017-10-30 13:13:10 +0300
commit9d930af9e109884f219a2254dc444c7a943b1e6e (patch)
treee0a54fb305e83323c848cf216d2def364b816120 /include/functions.php
parent8716ec20d6365c2dae8012ce7c1d874594e488a1 (diff)
fetch_file_contents: improve error handling
1. if request fails get error string from http response status line 2. do not override http error with possible CURL/php specific last error 3. fix silent php error generated while processing response headers to get last modified value
Diffstat (limited to 'include/functions.php')
-rw-r--r--include/functions.php62
1 files changed, 32 insertions, 30 deletions
diff --git a/include/functions.php b/include/functions.php
index 392042b90..f883a12e7 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -432,11 +432,18 @@
$contents = substr($ret, $headers_length);
foreach ($headers as $header) {
- list ($key, $value) = explode(": ", $header);
+ if (strstr($header, ": ") !== FALSE) {
+ list ($key, $value) = explode(": ", $header);
- if (strtolower($key) == "last-modified") {
- $fetch_last_modified = $value;
- }
+ if (strtolower($key) == "last-modified") {
+ $fetch_last_modified = $value;
+ }
+ }
+
+ if (substr(strtolower($header), 0, 7) == 'http/1.') {
+ $fetch_last_error_code = (int) substr($header, 9, 3);
+ $fetch_last_error = $header;
+ }
}
if (curl_errno($ch) === 23 || curl_errno($ch) === 61) {
@@ -450,11 +457,11 @@
$fetch_last_error_code = $http_code;
if ($http_code != 200 || $type && strpos($fetch_last_content_type, "$type") === false) {
+
if (curl_errno($ch) != 0) {
- $fetch_last_error = curl_errno($ch) . " " . curl_error($ch);
- } else {
- $fetch_last_error = "HTTP Code: $http_code";
+ $fetch_last_error .= "; " . curl_errno($ch) . " " . curl_error($ch);
}
+
$fetch_last_error_content = $contents;
curl_close($ch);
return false;
@@ -466,12 +473,6 @@
return false;
}
- /*$fetch_last_modified = curl_getinfo($ch, CURLINFO_FILETIME);
-
- if ($fetch_last_modified != -1) {
- echo date("Y-m-d H:i:s", $fetch_last_modified); die;
- }*/
-
curl_close($ch);
return $contents;
@@ -517,21 +518,24 @@
$data = @file_get_contents($url, false, $context);
if (isset($http_response_header) && is_array($http_response_header)) {
- foreach ($http_response_header as $h) {
- list ($key, $value) = explode(": ", $h);
-
- $key = strtolower($key);
-
- if ($key == 'content-type') {
- $fetch_last_content_type = $value;
- // don't abort here b/c there might be more than one
- // e.g. if we were being redirected -- last one is the right one
- } else if ($key == 'last-modified') {
- $fetch_last_modified = $value;
- }
+ foreach ($http_response_header as $header) {
+ if (strstr($header, ": ") !== FALSE) {
+ list ($key, $value) = explode(": ", $header);
+
+ $key = strtolower($key);
+
+ if ($key == 'content-type') {
+ $fetch_last_content_type = $value;
+ // don't abort here b/c there might be more than one
+ // e.g. if we were being redirected -- last one is the right one
+ } else if ($key == 'last-modified') {
+ $fetch_last_modified = $value;
+ }
+ }
- if (substr(strtolower($h), 0, 7) == 'http/1.') {
- $fetch_last_error_code = (int) substr($h, 9, 3);
+ if (substr(strtolower($header), 0, 7) == 'http/1.') {
+ $fetch_last_error_code = (int) substr($header, 9, 3);
+ $fetch_last_error = $header;
}
}
}
@@ -540,9 +544,7 @@
$error = error_get_last();
if ($error['message'] != $old_error['message']) {
- $fetch_last_error = $error["message"];
- } else {
- $fetch_last_error = "HTTP Code: $fetch_last_error_code";
+ $fetch_last_error .= "; " . $error["message"];
}
$fetch_last_error_content = $data;