Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: http-заголовки

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: kran   (21.10.2005 в 13:56)   письмо автору
 
   для: cheops   (21.10.2005 в 13:44)
 

Все понятно!
Огромное спасибо за внимание и помощь в решении данной проблемы!
Все работает отлично и только благодаря Вам!
Cheops вы СУПЕР, как ПРОГРАММИСТ и ЧЕЛОВЕК!

З.Ы.: Вам бы надо на сайте книгу отзывов сделать, для тех кому вы помогли.
Типа: Сайт->Проблема->Решение->Отзыв
Пусть народ знает своих героев :)))

   
 
 автор: cheops   (21.10.2005 в 13:44)   письмо автору
 
   для: kran   (21.10.2005 в 13:33)
 

1) Нет для работы с заголовками, которые получают сокеты специальных функций нет... в PHP используются только специфические функции, вроде setcookie(), session_start(), header()...

   
 
 автор: kran   (21.10.2005 в 13:33)   письмо автору
 
   для: cheops   (21.10.2005 в 13:07)
 

1) Вот именно так я и делаю, один в один :))) Просто мне думалось что для работы с заголовками должны быть специальные функции, вот например откопал getallheaders(), но она кажется не совсем подходит, может еще что есть?

2) Вроде бы проблема решена, по крайней мере 3 раза в цикле прогнал через скрипт 1000 url и не одного зависания! Сделал следующее: уменьшил время соединения до 10 и в конце цикла все используемые переменные добавил в unset(), там раньше были только переменные вида $var. , но на этот раз я туда добавил абсолютно всё!
Как выяснилось при отсутствии значения какой-нибудь переменной, она не уничтожалась, а передавалась с этим же значением в очередное вхождение в цикл, и тем самым вызывая сбой!

   
 
 автор: cheops   (21.10.2005 в 13:07)   письмо автору
 
   для: kran   (20.10.2005 в 23:50)
 

1) Так а вы их просто в массив помещайте, а тело документа отдельно грузите... тогда вы сможете просматривать массив в цикле, только каждый раз после использования уничтожайте массив при помощи unset() иначе у вас будут старые заголовки в него просачиваться...
2) Ну при такой скорости можно и меньше - если сервер не отзывается за такое время при таком канале, он скорее всего не рабочий...

   
 
 автор: kran   (20.10.2005 в 23:50)   письмо автору
 
   для: cheops   (20.10.2005 в 22:39)
 

1) Ну примерно так! Т.е. если код ошибки имеет постоянное место в массиве, то остальные заголовки выводятся, что называется - "как придется". По крайней мере просмотрев около 500 записей никакой закономерности я не обнаружил! Вот если бы массив можно было бы вернуть, скажем ассоциативным, тогда было бы другое дело!
Можно конечно весь массив перебрать и сравнить по шаблонам интересующие значения, но может быть есть какой-нибудь другой способ, более рациональный и удобный!

2) Cоединение 256 Kb.
Думаете, что надо именно уменьшить время ожидания?
Попробую, думаю 10 должно вполне хватить!

   
 
 автор: cheops   (20.10.2005 в 22:39)   письмо автору
 
   для: kran   (20.10.2005 в 21:42)
 

1) Не очень понятно, т.е. нужно просто вытащить содержимое заголовков Location и Charset?
2) Хм... а соединение быстрое? Попробуйте уменьшить ожидание сокета с 30 секунд на меньшее (последний параметр fsockopen())

   
 
 автор: kran   (20.10.2005 в 21:42)   письмо автору
 
   для: cheops   (20.10.2005 в 21:28)
 

1) Про первую строку я понял, это легко. Значение кода будет всегда в массиве с индексом =0. А как выцепить остальные заголовки Location и Charset, если не циклом с проверкой?

2) У меня вывставлено ограничение выполнения скрипта на сутки, можно сказать на бесконечное время :)) Сервер стоит дома, ограничений никаких на нем нет, соединение с интернет постоянное. Почему виснет, незнаю?
Когда вместо сокетов использовал file_get_contents(), такого не было! Может в этом дело?

   
 
 автор: cheops   (20.10.2005 в 21:28)   письмо автору
 
   для: kran   (20.10.2005 в 19:21)
 

1) код идёт первой строкой - её нужно всегда смотреть, если код 200 - обрабатывать дальнейший поток как страницу, если код 301 или 302 - смотреть новый URL и грузить страницу от туда.

2) Ограничение по времени снято? У вас фигурирует 10 минут
<?php
  set_time_limit
(600);
?>

снимите вообще ограничения
<?php
  set_time_limit
(0); // бесконечное время
?>

   
 
 автор: kran   (20.10.2005 в 20:37)   письмо автору
 
   для: napTu3aH   (20.10.2005 в 20:00)
 

>Вам скорее всего нужна функция urldecode, вот темы в
>которых это подробнее обсуждается
>http://softtime.ru/forum/read.php?id_forum=1&amp;id_theme=8172&amp;page=1
>http://softtime.ru/forum/read.php?id_forum=1&amp;id_theme=7442&amp;page=1

Спасибо, но меня интересует немного другое :))) , например http-заголовки и работа с ними!

А этот пример я просто так привел, как продукт тестирования обсуждаемого скрипта, эта функция скорее админам этих сайтов пригодится :))

Конечно если такие сайты есть, то придется написать для них отдельное правило их обработки :)

   
 
 автор: napTu3aH   (20.10.2005 в 20:00)   письмо автору
 
   для: kran   (20.10.2005 в 19:35)
 

Вам скорее всего нужна функция urldecode, вот темы в которых это подробнее обсуждается
http://softtime.ru/forum/read.php?id_forum=1&id_theme=8172&page=1
http://softtime.ru/forum/read.php?id_forum=1&id_theme=7442&page=1

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования