23.02.2019, 15:18 [+3 UTC]
в нашей команде: 3 403 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.69 (10.02.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
10.02.2019, 21:59

Форум:
23.02.2019, 14:53

Последний вопрос:
23.02.2019, 14:52
Всего: 148819

Последний ответ:
23.02.2019, 05:22
Всего: 257824

Последняя рассылка:
22.02.2019, 23:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
22.08.2010, 11:44 »
alexandr07
Спасибо Александру Сергеевичу за хороший ответ [вопрос № 179743, ответ № 262838]
21.11.2010, 01:41 »
Мироненко Николай Николаевич
Хорошие варианты, будет с чего выбирать. Спасибо Вам большое smile [вопрос № 180820, ответ № 264193]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 678
SAW
Статус: 6-й класс
Рейтинг: 114
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 3

Перейти к консультации №:
 

Консультация онлайн # 66408
Раздел: • PHP / Perl / Python
Автор вопроса: Tatiana L
Отправлена: 10.12.2006, 21:21
Поступило ответов: 3

Уважаемые эксперты, есть такая задача. Есть один сервер, на котором разрешено выполнять php скрипты (PHP 4.0). Есть и второй, на котором лежат только html страницы. На первом сервере представлен список ссылок на файлы (лежащие на втором). Каким образом можно определить, не устарели ли ссылки на втором сервере, т.е. существует ли там файл с указанным адресом? Думаю, что можно как-то отправить файлу некий заголовок и посмотреть, какой header вернет сервер, а потом сравнить, не соответствует ли он ошибке 404 ? (т.е. файл отсутствует).

Состояние: Консультация закрыта

Ответ # 130902 от Денис Сергеевич

Здравствуйте, Tatiana L!

Проверить, существует ли удаленный файл можно так:

$open=fopen("http://адрес_сайта/название_файла.html","r");
if (!$open) {
echo "Такой файл не найден";
exit;
}

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


Консультировал: Денис Сергеевич
Дата отправки: 10.12.2006, 21:37

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 130926 от Константин

Здравствуйте, Tatiana L!
Отвечая на ваш комментарий, между прочим если доступ к файлу "запаролен", то открыть его не удастся. Если его перенесли, то открыть его не удастся и т.д. Иными словами, открытие произойдет только в случае если код возврата 200.

А получить заголовок... Ну посылайте HTTP-запрос с помощью curl (полезная библиотека) и смотрите ответ.

Но мне кажется - это лишняя головная боль. Вашу задачу решает предложенный Денисом Сергеевичем способ.

Буду очень благодарен, если вы мне приведете пример, когда он не работает :)


Консультировал: Константин
Дата отправки: 11.12.2006, 00:52

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 130931 от Cimus

Здравствуйте, Tatiana L!
Вы совершенно правы, достаточно отправить заголовок и посмотреть ответ.

Приложение:


Консультировал: Cimus
Дата отправки: 11.12.2006, 01:47

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 66408
Tatiana L

# 1

= общий = | 10.12.2006, 21:44

Спасибо, но есть другой нюанс: сайт на втором сервере могут закрыть, перенести, запаролить доступ и т.д., поэтому хотелось бы все-таки получить именно header, чтобы видеть, что пришло - 301, 302, 404, 403, 200 или любой другой ответ. Поэтому Ваш вариант не подходит, к сожалению

Cimus

# 2

= общий = | 11.12.2006, 02:03

Почитайте вот тут - http://www.antichat.ru/crackchat/HTTP/http.html, Если файлы запаролят, то можно и пароль передать через сокеты и соответственно файл прочитать. Вообще по сравнению функциями ( fopen ) работы с файлами сетевые функции ( fsockopen ) работают на более низком уровне, что позволяет добиться большей гибкости и полного доступа к данным

Tatiana L

# 3

= общий = | 11.12.2006, 15:20

Для Cimus - попробовала Ваш вариант, получаю на все файлы одинаковое сообщение: Произошла ошибка при открытии ! номер: 10060 описание: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. Пробую на локальной машине, установлен Денвер, подключение к Интернету через VPN провайдера. Может, на localhost это не работает?

Cimus

# 4

= общий = | 11.12.2006, 18:15

Я написал пример используя localhost и всё работало отлично, проверте разрешены ли сокеты в php.ini.

Tatiana L

# 5

= общий = | 11.12.2006, 20:09

Спасибо. Я смутно представляю, как должны быть разрешены сокеты php.ini. Поиск в этом файле по слову socket показал: default_socket_timeout = 60 extension=php_sockets.dll mysql.default_socket = [Sockets] ; Use the system read() function instead of the php_read() wrapper. sockets.use_system_read = On Это все, или я что-то не нашла? P.S. Попробовала загрузить на и-нетовский сервер - получила ошибку с номером 0, единственная разница - в скорости выпадения ошибок, на localhost гораздо медленнее.

Tatiana L

# 6

= общий = | 11.12.2006, 23:27

Всем спасибо. Рабочий вариант: $info=parse_url($valueURL); echo '
'.$valueURL.' - '; $fsoc = fsockopen($info['host'],80); fputs($fsoc,"HEAD ".(isset($info['path'])?$info['path']:'/')." HTTP/1.0\nHost: ".$info['host']."\n\n"); echo fgets($fsoc,1000); fclose($fsoc);

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.17030 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.69 от 10.02.2019
Версия JS: 1.33 | Версия CSS: 3.35