|
|
|
| По таймеру запускается скрипт, содержащий код:
<?php
$tmp = file_get_contents('http://www.site.ru/otvet.txt');
|
Файл otvet.txt бывает довольно большой – больше 3 Мб. Поэтому нет уверенности в том, что он всегда будет успешно скачан.
В связи с этим хотелось бы иметь проверку того, что этот файл скачался полностью, что бы в случае неудачи повторить скачивание.
Возможно ли осуществить такую проверку? | |
|
|
|
|
|
|
|
для: Владимир55
(23.02.2012 в 22:41)
| | Мануал: «В случае неудачи, file_get_contents() вернёт FALSE.»
Оно? | |
|
|
|
|
|
|
|
для: Киналь
(23.02.2012 в 23:50)
| | Оно.
Только я вот чего не пойму: если скачиваемого файла не существует, то выдается FALSE. А если файл существует, но скачался не полностью вследствие разрыва соединения, тогда как? | |
|
|
|
|
|
|
|
для: Владимир55
(24.02.2012 в 00:05)
| | FALSE вернется не если файл не существует, а в случае возникновения ошибки. Если вам важно знать какого рода эта ошибка, то проверьте сперва if( file_exists() ) тогда $s = file_get_contents() и if( $s === false ) echo "read error". Вообще 3Мб это не проблема. Если файл читается в пределах сервера, так он точно прочитается. Ну если не на 100%, то на 99.999. | |
|
|
|
|
|
|
|
для: Sfinks
(24.02.2012 в 00:15)
| | К сожалению, проверку if( file_exists() ) осуществить невозможно, поскольку file_exists() не работает с удаленными файлами, не доступными файловой системе, на которой установлен скрипт. | |
|
|
|
|
|
|
|
для: Владимир55
(25.02.2012 в 10:37)
| | Тогда загружайте файл через curl, а не через file_get_contents. После загрузки, но перед закрытием curl, можно узнать много полезной информации через curl_getinfo(). | |
|
|
|
|
|
|
|
для: Sfinks
(25.02.2012 в 11:17)
| | Можно сделать, опираясь только на file_get_contents. Но нюанс в том (и с curl он останется), что при отсутствии файла попытка его скачать занимает заметное время.
Я полагал, что проверка существования файла пройдет мгновенно, а уж скачивание будет длиться, сколько потребуется. А получается, что попытка открыть несуществующий файл длится не меньше, чем длилось бы само скачивание!
Похоже, что это работает только таким образом... Ну, пусть работает хоть так. | |
|
|
|
|
|
|
|
для: Владимир55
(25.02.2012 в 11:36)
| | > попытка открыть несуществующий файл длится не меньше, чем длилось бы само скачивание
Плохо понимаю, как такое может быть. Только если сервер на 404 отдает огромную страницу. В таком случае можно сперва загрузить только заголовки страницы, чтоб проверить существование. | |
|
|
|
|
|
|
|
для: Sfinks
(25.02.2012 в 13:15)
| | В таком случае можно сперва загрузить только заголовки страницы, чтоб проверить существование.
Отличная идея! | |
|
|
|
|
|
|
|
для: Владимир55
(24.02.2012 в 00:05)
| | Практика — критерий истины. Попробуйте скачать файл 100 Мб) Он-то точно до конца не загрузится, вот и увидите, что будет в этом случае. | |
|
|
|