Реклама на сайте Advertise with us

Проблема с грабом

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558

Ссылка на сообщениеДобавлено: 25/02/05 в 03:43       Ответить с цитатойцитата 

Раньше грабил фото простым скриптом на основе
copy ($url,$url_out) , где урлы подставляются через цикл, параллельно генерятся тумбы, добавляются записи в базу и тд.
Но вот переехал на новый сервер и скрипт работать отказывается

Грабит только первую фото, а потом Опера выдает "соединение закрыто удаленным сервером" а эксплорер вываливает "невозможно отобразить страницу".

Подскажите плз, в чем может быть проблема и как ее исправить....
Буду ну о-о-очень признателен...

0
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 25/02/05 в 08:20       Ответить с цитатойцитата 

Наиболее вероятно - подвисает коннект твой сервер-сервер откуда скачивать, по причине конфигурации сервера
(проверь phpinfo();)
либо allow_url_fopen=off
либо safe_mode=on

Либо на том сервере откуда ты грабишь картинки стоит защита от хотлинка, от неправильных useragent и проч, так что copy(); в данном случае не даст желаемого результата

1
 



С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558

Ссылка на сообщениеДобавлено: 25/02/05 в 17:45       Ответить с цитатойцитата 

ku писал:
Наиболее вероятно - подвисает коннект твой сервер-сервер откуда скачивать, по причине конфигурации сервера
(проверь phpinfo();)
либо allow_url_fopen=off
либо safe_mode=on
Либо на том сервере откуда ты грабишь картинки стоит защита от хотлинка, от неправильных useragent и проч, так что copy(); в данном случае не даст желаемого результата


Конфигурация сервера:
allow_url_fopen=on
safe_mode=off

Если бы на сервере откуда я граблю стояла защита от хотлинка, то ИМХО, скрипт не грабил бы первую фотку, а он это делает и только после этого обрывается коннект.
К тому же на сервере у другого хостера этот скрипт работает, т.е. причина в конфигурации сервера...
вото только где и как бы ее обойти?

0
 

[www]

С нами с 14.07.04
Сообщения: 1693
Рейтинг: 872

Ссылка на сообщениеДобавлено: 25/02/05 в 18:09       Ответить с цитатойцитата 

может поможет ....
тут полная инфа http://ru.php.net/manual/en/function.set-time-limit.php
ну или сразу встраивай первой строкой ;)
Код:

set_time_limit(0);

.

1
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 25/02/05 в 18:18       Ответить с цитатойцитата 

версия PHP?
если действительно связано с таймаутом и set_time_limit(0) не поможет - есть вероятность что из скриптов запрещено менять этот параметр, уточни этот момент у хостера.

1
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 25/02/05 в 22:29       Ответить с цитатойцитата 

Еще один вариант: попробовать запустить скрипт из FireFox.
Могут быть глюки Оперы.

1
 



С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558

Ссылка на сообщениеДобавлено: 26/02/05 в 00:16       Ответить с цитатойцитата 

версия пхп 4.3.10

set_time_limit использую

даже если бы хостер запрещал изменять этот параметр, скрипт прекращает свою работу всего через несколько секунд, после загрузки первого фото, а по умолчанию на сервере max_execution_time = 30

Это не глюк оперы точно, т.к. експлорер также "неадекватно" реагирует, да и локально и у другого хостера скрипт в той же опрере работает нормально,
браузер тут непричем, результата работы скрипта-то нет =(

0
 

[www]

С нами с 14.07.04
Сообщения: 1693
Рейтинг: 872

Ссылка на сообщениеДобавлено: 26/02/05 в 01:33       Ответить с цитатойцитата 

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

.

1
 



С нами с 16.02.05
Сообщения: 123
Рейтинг: 155

Ссылка на сообщениеДобавлено: 27/02/05 в 18:01       Ответить с цитатойцитата 

Сталкивался с таким, когда картинки из галер дергал. Правда подобное не всегда выскакивало, а от балды...после нескольких испытаний нашел - надо лочить сокет. Тогда и скорость повышается и подобные глюки исчезают. После это еще в 3х грабберах использовал - всегда на 100% работало.

1
 



С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558

Ссылка на сообщениеДобавлено: 28/02/05 в 00:27       Ответить с цитатойцитата 

а поподробней можно насчет "лочить сокет" ? или хотя бы в стандартных терминах, что сие есть, чтоб я сам мог инфу найти....

ну не настолько я хорошо с пхп дружу =(

0
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 28/02/05 в 08:49       Ответить с цитатойцитата 

обычно применяется при работе с raw сокетами, при этом PHP должен быть собран с поддержкой оных. Примеры есть в сети, но если в php не дружишь, для тебя может быть тарабарщиной.

Кинь код в аську (в профайле), самому интересно что же там у тебя такое

1
 



С нами с 16.02.05
Сообщения: 123
Рейтинг: 155

Ссылка на сообщениеДобавлено: 28/02/05 в 12:51       Ответить с цитатойцитата 

В PHP это теперь называется
stream_set_blocking -- Set blocking/non-blocking mode on a stream

Я думаю в любом языке подобное должно быть. А для работы с HTTP лучше применять специальные классы, а не простое copy. Так надежнее будет.

1
 



С нами с 24.02.05
Сообщения: 75
Рейтинг: 123

Ссылка на сообщениеДобавлено: 28/02/05 в 15:38       Ответить с цитатойцитата 

с copy() это действительно "беcполезно"

This affects calls like fgets() and fread() that read from the stream. In non-blocking mode an fgets() call will always return right away while in blocking mode it will wait for data to become available on the stream.

т.е. если проблема связана с blocking/nonblocking - цикл нужно переписать под fopen/fread/fwrite, fsock..., raw socket, curl, etc

1
 



С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558

Ссылка на сообщениеДобавлено: 01/03/05 в 00:58       Ответить с цитатойцитата 

Насчет классов.... я использовал класс Snoopy ...может встречали такой...

Snoopy - the PHP net client
Author: Monte Ohrt <monte@ispi.net>
Version: 1.0
snoopy.sourceforge.com

но он также отказывается работать... хотя блокировку сокета, насколько я понял, он не использует....

Всем большое спасибо за помощь, пойду читать доки...
может что и выстрадаю.... =)[/quote]

0
 



С нами с 16.02.05
Сообщения: 123
Рейтинг: 155

Ссылка на сообщениеДобавлено: 01/03/05 в 11:42       Ответить с цитатойцитата 

Snoopy хороший. Но Я в для редизайна галер пользую Net_HTTP_Client. Он проще, но вполне достаточный для этих целей.
Вот его кусок
Код:
   Net_HTTP_Client class
   
@DESCRIPTION

   HTTP Client component
   suppots methods HEAD, GET, POST
   1.0 and 1.1 compliant
   WebDAV methods tested against Apache/mod_dav
   Documentation @ http://lwest.free.fr/doc/php/lib/net_http_client-en.html

и там в методе processBody() есть такое
socket_set_blocking( $this->socket, false );
Вот у меня это закоментировано. И тода заработало.

1
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »