Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подгрузка нескольких потоков, Скачиваю сайты 
V
    Опции темы
Levsha
Дата 25.6.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



Цитата(sTa1kEr @  26.6.2007,  00:15 Найти цитируемый пост)
В начале функции в переменную запишите метку времени и добавьте в цикл условие. Можно добавить в цикл для чтения данных такую же проверку.
Совсем забыл о простейших методах...


--------------------
PM   Вверх
Levsha
Дата 25.6.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



sTa1kEr, спасибо, заработало... Я думаю set_time_limit(90); помог.

Добавлено через 3 минуты и 36 секунд
Кстати созданный благодаря этому продукт... http://web-alt.ru/stat


--------------------
PM   Вверх
aktuba
Дата 25.6.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Levsha, что-то у тебя не так работает. Попробуй введи nnm.ru и посмотри, сколько выведет проиндексированных страниц в Яндексе. Всего 2, в то время, как почти по любому запросу nnm.ru попадает в результаты поиска.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
sTa1kEr
Дата 25.6.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Для большинства сайтов выдает пустую страницу.

Добавлено через 5 минут и 22 секунды
Levsha, кстати, забавно, если ввести URL сайта web-alt.ru/stat/?url=ya.ru, то он отрабатывает нормально smile. Страшно подумать, что будет если вместо ya.ru подставить ссылку на анализ самой страницы (т.е. примерно так 'web-alt.ru/stat/?url=web-alt.ru/stat/?url=web-alt.ru/stat/?url=' итд). Имхо, надо исключать свой домен.
PM MAIL   Вверх
Levsha
Дата 25.6.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



aktuba, ну так ты по ссылке ходил? Там действительно две страницы... Это нестрашно, пару дней назад я застал ситуацию, когда яндекс показывал что для моего сайта вообще нет проиндексированных страниц, хотя всегда показывал 49. У Яндекса такое бывает, и на выдачу это не влияет, просто какой-то пересчет данных...

aktuba, спасибо, что воспользовался серсисом. Буду рад слышать рекомендации и советы. Только тему желательно обсуждать здесь.


Добавлено @ 18:27
Цитата(sTa1kEr @  26.6.2007,  02:14 Найти цитируемый пост)
Страшно подумать, что будет если вместо ya.ru подставить ссылку на анализ самой страницы (т.е. примерно так 'web-alt.ru/stat/?url=web-alt.ru/stat/?url=web-alt.ru/stat/?url=' итд). Имхо, надо исключать свой домен.

Да нет, я пробовал, ничего страшного не случается. Домен отделяется от остальной части, и по нему идет анализ, то что после "?" практически не учавствует в анализе

Добавлено @ 18:30
Цитата(sTa1kEr @  26.6.2007,  02:14 Найти цитируемый пост)
Для большинства сайтов выдает пустую страницу.
Большие проблемы с кодировками, непрерывно работаю над проектом уже 12 часов - сказывается

Это сообщение отредактировал(а) Levsha - 25.6.2007, 18:30


--------------------
PM   Вверх
aktuba
Дата 25.6.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Цитата

aktuba, ну так ты по ссылке ходил? Там действительно две страницы... 


Я вообще-то там модер =))) Две страницы говоришь? Это на сайте, с более 1 000 000 зарегистрированных пользователей, более 20 000 личных дневников, в каждом из которых от 1 до 100 и более страниц по 15 новостей, а каждая новость - отдельная страница??? Чего-то ты загнул...




--------------------
user posted image
PM MAIL WWW Skype   Вверх
Levsha
Дата 25.6.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



aktuba, по ссылке под цифрой 2 ты сходил??? Эх, все надо делать самому...
Вот эта ссылка. Как видишь, там действительно две страницы. Я всего лишь транслирую их результат. Повторяю, либо это временный глюк Яндекса, либо пиши платону

Добавлено через 2 минуты и 2 секунды
sTa1kEr, абсолютно все работает нормально, пока я не использую функцию MyDownload
Она постоянно в чем-нибудь глючит... Абидна


--------------------
PM   Вверх
sTa1kEr
Дата 25.6.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Levsha @  25.6.2007,  19:09 Найти цитируемый пост)
sTa1kEr, абсолютно все работает нормально, пока я не использую функцию MyDownload
Она постоянно в чем-нибудь глючит... Абидна 

Кто сказал, что все сразу должно идеально работать, к тому же если учесть, что изначально она писалась как пример? С какими именно URL-ами она не работает и что не работает? Т.к. локально у меня проблем не обнаружилось.
PM MAIL   Вверх
Levsha
Дата 25.6.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



sTa1kEr, так в том то и проблема,что не могу отловить на котором url происходит ошибка. У меня есть смутное сомнение, что на хостинге хреновый канал, и сайт просто не успевает ничего скачивать...


--------------------
PM   Вверх
sTa1kEr
Дата 26.6.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Написал простой класс работы с потоками (примерно тоже, что здесь выкладывали, только слегка модернизировал). Что бы не засорять форум исходниками выложил его в гугле http://multi-downoader.googlecode.com/svn/trunk/Downloader/ Там же лежит тестовый скрипт и лог выполнения этого скрипта у меня. Все 104 страницы скачались без проблем, правда как показал тест, производительность не высокая, как ожидалось. 44 секунды...
Levsha, попробуйте запустите тест, если будет ошибка, то в логах ее будет видно. Только не забудьте set_time_limit побольше поставить.

Это сообщение отредактировал(а) sTa1kEr - 26.6.2007, 13:41
PM MAIL   Вверх
Levsha
Дата 27.6.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



sTa1kEr, спасибо, протестирую


--------------------
PM   Вверх
nerezus
  Дата 28.6.2007, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



А почему именно пхп применяется для такой задачи? Не проще ли заюзать другой ЯП с поддержкой потоков(нитей)?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Levsha
Дата 28.6.2007, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 30.9.2005

Репутация: нет
Всего: 4



Цитата(nerezus @  28.6.2007,  13:40 Найти цитируемый пост)
А почему именно пхп применяется для такой задачи?
Потому что я умею программировать на PHP smile 


Цитата(nerezus @  28.6.2007,  13:40 Найти цитируемый пост)
Не проще ли заюзать другой ЯП с поддержкой потоков(нитей)?
Какой ЯП по твоему лучше подойдет?


--------------------
PM   Вверх
sTa1kEr
Дата 28.6.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(nerezus @  28.6.2007,  05:40 Найти цитируемый пост)
А почему именно пхп применяется для такой задачи? Не проще ли заюзать другой ЯП с поддержкой потоков(нитей)? 

Интересна реализация именно на пхп, т.к. на .NET, к примеру, это просто и очевидно, но подходит только для Windows платформ. На других прикладных языках будет слишком тяжело работать именно c Web (то , что на PHP одна встроенная функция, на C++ уже может потребовать своего объемного класс), а интегрировать PHP скрипт с какой-либо внешней программой- не менее проблематично, как и создавать мультипоточность в скриптовом языке.
И еще просто спортивный интерес, реализовывать на PHP то, для чего он в принципе не предназначенsmile

Цитата(Levsha @  28.6.2007,  07:53 Найти цитируемый пост)
Какой ЯП по твоему лучше подойдет? 

nerezus, мне то же интересно, на каком языке вы предлагаете это реализовывать?

Это сообщение отредактировал(а) sTa1kEr - 28.6.2007, 10:36
PM MAIL   Вверх
sTa1kEr
Дата 28.6.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Еще одно замечание по работе со stream functions. Как-то я совсем упустил из виду эту важную деталь... При отключенной блокировке потока, он не ждет данные, а только забирает то, что уже пришло на данный момент, поэтому просто использовать циклы нельзя, т.к. при очередной итерации данных еще может не быть и fread() вернет false...  Поэтому нужно перед чтением либо включать блокировку
Код

stream_set_blocking($stream, 1); // включаем блокировку
while (($buffer = fread($stream, 1024)) !== false) // спокойно читаем
{
   $content .= $buffer;
}
stream_set_blocking($stream, 0); // отключаем обратно

Либо проверять на доступность, через тот же stream_select каждый раз
Код

$eof = false;
while (stream_select($r = array($stream), $w = null, $e = null, 0) > 0)

   // есть данные для чтения
   $content .= fread($r[0], 1024);
   $eof = feof($r[0]);
}
if ($eof)
{
   // прочитали все данные, удаляем поток
}
else
{
   // еще не все прочитали, пока можно делать что-то другое, а к чтению данных этого потока вернутся позже
}


PM MAIL   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0930 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.