23.07.2018, 07:08 [+3 UTC]
в нашей команде: 2 884 чел. | участники онлайн: 1 (рекорд: 21)

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

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

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
20.07.2018, 12:27

Последний вопрос:
20.07.2018, 13:35

Последний ответ:
19.07.2018, 14:46

Последняя рассылка:
21.07.2018, 00:45

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

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

Наша кнопка:

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

Отзывы о нас:
20.09.2009, 17:41 »
Егоров Ярослав Владимирович
Огромное спасибо! Насколько я могу судить - решение абсолютно правильное. [вопрос № 172365, ответ № 254415]
16.11.2009, 11:57 »
megamaks
За упорство и настойчивость! [вопрос № 174217, ответ № 256568]
07.06.2010, 19:07 »
малетин олег валериянович
Спасибо, Александр Львович, за ответ. [вопрос № 178960, ответ № 261951]

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

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

[администратор рассылки: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)]

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

Асмик Гаряка
Статус: Советник
Рейтинг: 0
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0
Хватов Сергей
Статус: Академик
Рейтинг: 0

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

Консультация онлайн # 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

Посетитель

ID: 9075

# 1

= общий = | 10.12.2006, 21:44 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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


Посетитель

ID: 11958

# 2

= общий = | 11.12.2006, 02:03 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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


Посетитель

ID: 9075

# 3

= общий = | 11.12.2006, 15:20 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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


Посетитель

ID: 11958

# 4

= общий = | 11.12.2006, 18:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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


Посетитель

ID: 9075

# 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 гораздо медленнее.


Посетитель

ID: 9075

# 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.14632 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018