PHP: библиотека CURL: получение статуса curl_exec - PullRequest
3 голосов
/ 01 июля 2011

Я использую cURL в PHP, чтобы написать функцию для передачи удаленного XML-файла в мою локальную папку. Все отлично работает, но у меня есть вопрос:

  $fileIn = curl_init("http://some-remote-host.com/file.xml);
  $fileOut = fopen('myLocal.xml", "w");

  curl_setopt($fileIn, CURLOPT_FILE, $fileOut);
  curl_setopt($fileIn, CURLOPT_HEADER, 0);

  $isCopied = curl_exec($fileIn);
  curl_close($fileIn);
  fclose($fileOut);

  if(!$isCopied)
     return false;
  else
     //do something else

На основании прочитанной документации предполагается, что $ isCopied имеет значение false, когда удаленного файла не существует, и не должно быть файла myLocal.xml, но мой if(!$isCopied), похоже, не работает. И это содержание моего myLocal.xml

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL something.xml was not found on this server.</p>
<hr>
<address>Apache Server at somehost.com Port 443</address>
</body></html>

Мой вопрос: как получить булеву переменную, сообщающую мне, когда она была успешной, а когда нет. (означает, что удаленный файл не существует).

Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

Вы можете использовать

curl_getinfo($fileIn, CURLINFO_HTTP_CODE); 

, чтобы увидеть, какой код http был возвращен (вы ищете 200).

2 голосов
/ 01 июля 2011

Попробуйте это:

$ isCopied = curl_getinfo ($ fileIn, CURLINFO_HTTP_CODE)! = 404;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...