С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558
|
Добавлено: 25/02/05 в 03:43 |
Раньше грабил фото простым скриптом на основе
copy ($url,$url_out) , где урлы подставляются через цикл, параллельно генерятся тумбы, добавляются записи в базу и тд.
Но вот переехал на новый сервер и скрипт работать отказывается
Грабит только первую фото, а потом Опера выдает "соединение закрыто удаленным сервером" а эксплорер вываливает "невозможно отобразить страницу".
Подскажите плз, в чем может быть проблема и как ее исправить....
Буду ну о-о-очень признателен...
|
|
|
|
С нами с 24.02.05
Сообщения: 75
Рейтинг: 123
|
Добавлено: 25/02/05 в 08:20 |
Наиболее вероятно - подвисает коннект твой сервер-сервер откуда скачивать, по причине конфигурации сервера
(проверь phpinfo();)
либо allow_url_fopen=off
либо safe_mode=on
Либо на том сервере откуда ты грабишь картинки стоит защита от хотлинка, от неправильных useragent и проч, так что copy(); в данном случае не даст желаемого результата
|
|
|
|
С нами с 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
Если бы на сервере откуда я граблю стояла защита от хотлинка, то ИМХО, скрипт не грабил бы первую фотку, а он это делает и только после этого обрывается коннект.
К тому же на сервере у другого хостера этот скрипт работает, т.е. причина в конфигурации сервера...
вото только где и как бы ее обойти?
|
|
|
|
[www]
С нами с 14.07.04
Сообщения: 1693
Рейтинг: 872
|
Добавлено: 25/02/05 в 18:09 |
|
|
|
|
С нами с 24.02.05
Сообщения: 75
Рейтинг: 123
|
Добавлено: 25/02/05 в 18:18 |
версия PHP?
если действительно связано с таймаутом и set_time_limit(0) не поможет - есть вероятность что из скриптов запрещено менять этот параметр, уточни этот момент у хостера.
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 25/02/05 в 22:29 |
Еще один вариант: попробовать запустить скрипт из FireFox.
Могут быть глюки Оперы.
|
|
|
|
С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558
|
Добавлено: 26/02/05 в 00:16 |
версия пхп 4.3.10
set_time_limit использую
даже если бы хостер запрещал изменять этот параметр, скрипт прекращает свою работу всего через несколько секунд, после загрузки первого фото, а по умолчанию на сервере max_execution_time = 30
Это не глюк оперы точно, т.к. експлорер также "неадекватно" реагирует, да и локально и у другого хостера скрипт в той же опрере работает нормально,
браузер тут непричем, результата работы скрипта-то нет =(
|
|
|
|
[www]
С нами с 14.07.04
Сообщения: 1693
Рейтинг: 872
|
Добавлено: 26/02/05 в 01:33 |
как вариант можно сравнить настройки нынещнего и сервера где скрипт работает, и уже исходя из этого искать в чем ошибка, выводя все промежуточные результаты работы скрипта....
"из стандартного" вроде уже все опробованно, но дох сих пор неработает... только отладка теперь.
|
|
|
|
С нами с 16.02.05
Сообщения: 123
Рейтинг: 155
|
Добавлено: 27/02/05 в 18:01 |
Сталкивался с таким, когда картинки из галер дергал. Правда подобное не всегда выскакивало, а от балды...после нескольких испытаний нашел - надо лочить сокет. Тогда и скорость повышается и подобные глюки исчезают. После это еще в 3х грабберах использовал - всегда на 100% работало.
|
|
|
|
С нами с 09.02.05
Сообщения: 1482
Рейтинг: 1558
|
Добавлено: 28/02/05 в 00:27 |
а поподробней можно насчет "лочить сокет" ? или хотя бы в стандартных терминах, что сие есть, чтоб я сам мог инфу найти....
ну не настолько я хорошо с пхп дружу =(
|
|
|
|
С нами с 24.02.05
Сообщения: 75
Рейтинг: 123
|
Добавлено: 28/02/05 в 08:49 |
обычно применяется при работе с raw сокетами, при этом PHP должен быть собран с поддержкой оных. Примеры есть в сети, но если в php не дружишь, для тебя может быть тарабарщиной.
Кинь код в аську (в профайле), самому интересно что же там у тебя такое
|
|
|
|
С нами с 16.02.05
Сообщения: 123
Рейтинг: 155
|
Добавлено: 28/02/05 в 12:51 |
В PHP это теперь называется
stream_set_blocking -- Set blocking/non-blocking mode on a stream
Я думаю в любом языке подобное должно быть. А для работы с HTTP лучше применять специальные классы, а не простое copy. Так надежнее будет.
|
|
|
|
С нами с 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
|
|
|
|
С нами с 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]
|
|
|
|
С нами с 16.02.05
Сообщения: 123
Рейтинг: 155
|
Добавлено: 01/03/05 в 11:42 |
Snoopy хороший. Но Я в для редизайна галер пользую Net_HTTP_Client. Он проще, но вполне достаточный для этих целей.
Вот его кусок
и там в методе processBody() есть такое
socket_set_blocking( $this->socket, false );
Вот у меня это закоментировано. И тода заработало.
|
|
|
|