проблема с fopen

Raven

Guest
проблема с fopen

Буду краток: Есть какая-то страница (html), в ней много различных ссылок. Закачав станицу и поочерёдно начинаю обходить ссылки, которые мне нужны закачиваю, кокие нет, не трогаю. Происходить постоянно одна и таже ошибка в виде:
Warning: fopen("http://www.fr.ch/rc/rc/consultation/consultation.asp?no_dossier_fed=CH-217-3531847-4&Ordre=DEFAUT&TypeConsultation=CP","r") - Success in /home/www/web15/html/cron.php on line 37

Warning: Supplied argument is not a valid File-Handle resource in /home/www/web15/html/cron.php on line 38

Warning: Supplied argument is not a valid File-Handle resource in /home/www/web15/html/cron.php on line 40

Warning: Supplied argument is not a valid File-Handle resource in /home/www/web15/html/cron.php on line 38


Не могу понять как с ней бороться.

Часть кода на что жалуется:
$site = fopen($url[0],"r");
while(!feof($site))
{
$str = fgets($site,1024);

А если повторно запусти, то на другом месте может выдать ошибку, а может и не выдать:(

Помогите, пожалуйста.

С уважением,
Сергей

-~{}~ 12.10.04 19:39:

версия языка 4.12
 

demis

Новичок
Т.к. серверы иногда бывают не доступны
поставь @ перед fopen
а если хочешь знать когда не доступны, до сделай проверку на открытие файла, и если не открыт, то пиши че-нить красивое.
 

Raven

Guest
Большое спасибо, помогло :)
Я пробывал проверять открыт ли файл или нет, не помогало. Сейчас @ поставил и сразу всё заработало.

Большое спасибо ещё раз!!!

С уважением,
Сергей
 

pooopsss

Guest
Ошибка чтения

Вообще у меня было нечто похожее на что я заменил
fopen на file запихнув файл в массив. Еще лучше при открытии читать файл функцией fread() -> попробуй ее.
 

Raven

Guest
fread пробывал, тоже самое было:-(

С уважением,
Сергей
 

demis

Новичок
Originally posted by Diesel
demis

Глупость несусветная. Ничего не надо ставить!
Raven не слушай. @ это тебе не волшебная палочка и файл она за тебя не откроет.
Я где-то написал что это решит проблему на удаленном сервере и откроет файл?
 

demis

Новичок
Это не глупый совет.
Я помоему ясно написал
@ убереть warning, но если надо знать открыт ли файл или нет, то нужно поставить проверку, а там уж самим думать че с этим файлом делать, забить ли на него или попробывать открыть его через некоторое время.
 

_RVK_

Новичок
demis
Для начала почитай это: http://myclient.hotbox.ru/err_php.html#@

Если не поймешь, поясню.

-~{}~ 13.10.04 18:38:

Но, дело даже не в этом(все же в этом конкретном случае можно и поспорить). Дело в том, что перед открытием файла нужно проверять.
1. Существует ли он.
2. Доступен ли для чтения(записи).

Перед чтением/записью обязательно проверить открыт ли файл.
 

demis

Новичок
Я бы посоветовал file_exists(), но не работает с удаленными файлами. Другой не нашел. Если пишешь нужно проверить, то пиши какой функцией.
Че мы здесь спор-то устроили? человеку это надо?
Добавь к пунктам функцию проверки на наличие файла и на доступ и пусть пользуется.
Но всеравно я бы юзал @, т.к. две лишние операции использовать при каждом его закачивание файлов. Diesel, твоих комментарий достаточно п этому поводу, напиши лучше человеку как ты считаешь нужным и пусть юзает. Или может кто-нить еще нас рассудит.
 

_RVK_

Новичок
demis
вывод ошибок запрещается ini_set('display_errors',0); без собак. А проверять открыт ли файл или нет нужно всегда хотя бы так
PHP:
if ($fp = fopen('file.ext','r'))   {
   //Что-то делаем с фйлом
}
 

Raven

Guest
1) в php.ini отключены предупреждения.
2) @ помогла убрать warning, что позволило сделать донолнительную проверку и всё сразу заработало.
3) Спор не имеет под собой ничего. Так как я написал, что это помогло и всё работает корректно теперь. Если есть другой способ обойти ошибку, напишите. Так как было бы полезно узнать и другие способы:) Опыт хорошая штука!!!:)

С уважением,
Сергей
 

Raven

Guest
if ($fp = fopen('file.ext'.'r')) {
//Что-то делаем с фйлом
}
не работает, проверял.

С уважением,
Сергей
 

demis

Новичок
Originally posted by Diesel
demis
вывод ошибок запрещается ini_set('display_errors',0); без собак. А проверять открыт ли файл или нет нужно всегда хотя бы так
PHP:
if ($fp = fopen('file.ext'.'r'))   {
   //Что-то делаем с фйлом
}
Вместо точки запятуй поставь, чтоб другие не копировали с ошибками, но суть не в этом. У него и была проблема с fopen, warning выдавал.
ini_set('display_errors',0); - это плохой вариант, не заметишь другую ошибку во всем коде. (на мой взгляд)
Raven, первый пункт всетаки вернуть назад хорошобы. Ты ж собираешся другие скрипты писать? да и в этом еще могут варнинги возникнуть.
Ну если Raven, признал что все разобрался, считаю что спор можно завершить.

-~{}~ 13.10.04 19:29:

Originally posted by Diesel
Raven
Что не работает?
как и предположил, скопировал с точкой и не поянл в чем проблема )
 

_RVK_

Новичок
ini_set('display_errors',0); - это плохой вариант, не заметишь другую ошибку во всем коде
Это не неплохой вариант. Это обязательный код в любом скрипте! Но естественно 0 это только когда разработка и отладка закончена.
как и предположил, скопировал с точкой и не поянл в чем проблема
Вот таким @ просто противопаказанна, в любом виде :)
 

Screamer

Новичок
PHP:
if ($fp = @fopen('file.ext', 'r')) {
  //Что-то делаем с фйлом
}
Вот как надо делать
 
Сверху