Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> заткнуть fopen 
:(
    Опции темы
bars80080
Дата 29.4.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



дурацкий вопрос,

вот я открываю файл fopen. чтобы проверить существует ли он - file_exists
а если я парсю страничку по адресу http://и_так_далее то file_exists уже не работает
иногда сервис который я открываю fopen отваливается и тогда появляется ошибка вида: 

Warning: fopen(http://server): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in ...

её конечно можно заткнуть с помощью @, а иного способа нет?
PM MAIL WWW   Вверх
Canarat
Дата 29.4.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



fsockopen. Там устанавливается $errorcode, который можно отловить.
PM MAIL   Вверх
bars80080
Дата 29.4.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



что-то fsockopen вообще работать не хочет:

Код
$adr1 = 'http://neotpuskaet.ru/modules/rss/rss_hottour.php';
$fp = fsockopen($adr1, 80);
var_dump($fp);
 без указания порта просто возвращает false, с указанием: 

Warning: fsockopen(): php_network_getaddresses: gethostbyname failed in d:\www\site\train\prob.php on line 15
Warning: fsockopen(): unable to connect to http://neotpuskaet.ru/modules/rss/rss_hottour.php:80 in d:\www\site\train\prob.php on line 15

если открывать fopen, то возвращает xml
PM MAIL WWW   Вверх
Canarat
Дата 29.4.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 11.3.2008
Где: Каспий

Репутация: 5
Всего: 5



Потому что fsockopen работает совсем по-другому.

http://php.net/fsockopen + готовые примеры здесь: http://de3.php.net/manual/en/features.remote-files.php

А зачем затыкать fopen? В чем проблема проверки булевого результата работы ащзут,
PM MAIL   Вверх
bars80080
Дата 29.4.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Canarat @  29.4.2008,  13:58 Найти цитируемый пост)
А зачем затыкать fopen? 

он выкидывает ошибку на страницу, если при указании адреса приходит Forbiden 403, а не ожидаемый xml
до проверки на булевость

Добавлено через 1 минуту и 12 секунд
но должен же мне fsockopen вернуть какой-то указатель?
PM MAIL WWW   Вверх
DeamonShan
Дата 29.4.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



воспользуймя классом HTTP_REQUEST

$req =& new HTTP_Request('http://neotpuskaet.ru/modules/rss/rss_hottour.php');


if (!PEAR::isError($req->sendRequest())) {
$f=fopen("tmp.xml","w");
fwrite($f, $req->getResponseBody());
fclose($f);
}

Сурс...
PM MAIL   Вверх
bars80080
Дата 29.4.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



жесть какая, я чисто хотел слегка придать коду стройности, т.к. @ как зло меня раздражает, но подключение доп. класса не соразмерно с одним маленьким пёсиком

собственно вопрос дурацкий, я думал мож найдётся решение двумя-тремя стандартными функциями

ладно, спасибо за ответы
ещё покручу fsockopen, мож получится, но по-моему цель не оправдывает усложнение
PM MAIL WWW   Вверх
Fortop
Дата 29.4.2008, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



bars80080, Не поверишь,
но @fopen(url) иногда использую для проверки наличия удаленной страницы smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
DeamonShan
Дата 29.4.2008, 21:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



fopen(url) - неправильное решение задачи...
PM MAIL   Вверх
Fortop
Дата 29.4.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



DeamonShan, ты гений smile тогда просвети нас неграмотных, какое решение будет правильным? smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
DeamonShan
Дата 29.4.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



Цитата(Fortop @ 29.4.2008,  23:04)
DeamonShan, ты гений smile тогда просвети нас неграмотных, какое решение будет правильным? smile

я не гений, просто это неправильно...))))) свой пример я привел))) выше... fopen() изначально предназначен для локальных файлов, даже если и умеет открывать урлы)))))...

меня fopen(url) так же раздрожает, как и @ bars80080

Это сообщение отредактировал(а) DeamonShan - 29.4.2008, 23:43
PM MAIL   Вверх
Fortop
Дата 30.4.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(DeamonShan @  29.4.2008,  23:41 Найти цитируемый пост)
я не гений, просто это неправильно...

Аргументировано настолько, что я ничего не понял :(

Ок, тогда я займусь просветительством.
http://ua2.php.net/manual/ru/function.fopen.php
Работает с любым доступным для PHP wrapper. А это значит что мы можем использовать его как универсальное средство
для работы и с URL и с файлами.
Работает, ко всему прочему, правильно, и быстрее, чем любые придуманные костыли. С генерацией ответов в XML, а потом доблестным разбором оного.

Класс HTTP_REQUEST, рекомендованный тобой, предназначен несколько для других вещей, чем простая проверка - существует ли файл.

Вот простой пример полезного применения @ для выяснения картинка ли заданный файл, попутно этот код так же проверяет, наличие файла.
Код

if (false !== ($info = @getimagesize(url)));


А раздражает fopen(url) - по одной простой причине - неумение работать с stream.

Это сообщение отредактировал(а) Fortop - 30.4.2008, 00:19


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
DeamonShan
Дата 30.4.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 26.11.2005

Репутация: 3
Всего: 6



умею я работать с фопеном и стримом и всем что связано с ним... 

вобщем не важно))) согласен с тобой.. фопеном иногда проще))

Это сообщение отредактировал(а) DeamonShan - 30.4.2008, 09:00
PM MAIL   Вверх
bars80080
Дата 30.4.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



да понятно что быстрее, просто собака есть зло по определению и смахивает на заплатку, хотел узнать есть ли сравнительно простой способ изъять её из кода, но видимо, она в самом деле самой простой в этом случае способ и нечего заморачиваться
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.