Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Кэш парсера
linklink26  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 118
Пользователь №: 24563
На форуме: 6 лет, 1 месяц, 11 дней
Карма:

Трезвый :
5 лет, 1 месяц, 7 дней


В общем вытаскиваю тех характеристики для товаров с сайта производителя курлом.
Страница грузится ~3 секунды, что скорее всего грузит сервак. Решил сделать парсер курлом в файлы. Чтобы потом открывать просто локально. Почему не в мускул? А фиг знает, подумал что в файлы быстрее, в общем вот что получается.

Я сначала собираю айдишники товаров, их всего 800 тысяч. После этого я каждый айдишник курлом подгружаю, и регулярками граблю нужные куски кода, затем fopen-ом сохраняю в файл текстовый. Скорость сохранения составляет 10 секунд 1 файл, т.е. слшком долго, мне при такой скорости нужно 800 часов для сохранения инфы. Как можно ускорить сохранение данных?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


Цитата
Почему не в мускул? А фиг знает, подумал что в файлы быстрее, в общем вот что получается.


угу, только не сортировки, не подсчёта суммы если нужно, не подсчёта товара в категории, даже фильтр по товарам не сделаешь.

не магазин - а копилка HTML файлов.

Цитата
Я сначала собираю айдишники товаров, их всего 800 тысяч.

Цитата
Как можно ускорить сохранение данных?

Всё просто - нужно найти сзади у компьютера разъём дял LAN - там, не вытаскивая сетевого кабеля, нужно дуть внутрь разъёма - тем самым ускоряя потоком воздуха бинарные данные.


мульи курл вам нужен, и file_put_contents()

но т.к. идея бредовая - то пожелания удачи - бессмысленны.



--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
linklink26  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 118
Пользователь №: 24563
На форуме: 6 лет, 1 месяц, 11 дней
Карма:

Трезвый :
5 лет, 1 месяц, 7 дней


Игорь_Vasinsky

Специально для вас перписал сохранение в мускул.

Вышли те же 10 сек на 1 запись, видимо долго просто парсит. Там просто защита у них, я сначала вытягиваю curl-om referer (т.е. загловки затем парсю их preg_match('/Location:(.*?)\n/') а потом уже повторно вытаскиваю код существующей страницы реферера и на это похоже уходит львиная доля времени.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
linklink26  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 118
Пользователь №: 24563
На форуме: 6 лет, 1 месяц, 11 дней
Карма:

Трезвый :
5 лет, 1 месяц, 7 дней


Т.е.

if( $curl = curl_init() ) {
curl_setopt($curl,CURLOPT_URL,'http://site.com/product/x/'.$seria.'.aspx');
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_HEADER,true);
$out = curl_exec($curl);
curl_close($curl);
}

$matches_one = array();

preg_match('/Location:(.*?)\n/', $out, $matches_one);

$referer = trim($matches_one[1]);

$ch = curl_init('http://site.com'.$referer);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$content = curl_exec($ch);
curl_close($ch);

if ($content!='') {
$sql = "INSERT INTO.........
}

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


Цитата
Вышли те же 10 сек на 1 запись, видимо долго просто парсит.

само собой - время на запрос и парсинг тоже уходит.

я же написал про мультикурл - там есть возможность запараллелить потоки.

https://github.com/bizonix/MultiCurl/blob/m...iCurl.class.php


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
linklink26  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 118
Пользователь №: 24563
На форуме: 6 лет, 1 месяц, 11 дней
Карма:

Трезвый :
5 лет, 1 месяц, 7 дней


Цитата (Игорь_Vasinsky @ 8.02.2016 - 14:30)
Цитата
Вышли те же 10 сек на 1 запись, видимо долго просто парсит.

само собой - время на запрос и парсинг тоже уходит.

я же написал про мультикурл - там есть возможность запараллелить потоки.

https://github.com/bizonix/MultiCurl/blob/m...iCurl.class.php

Я думал это опечатка и вы про мускуль)) Спасибо, покопаю мультикурл.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


не, не, я до 20 потоков запускал паралельно.

получается 20 за 1 идут по времени.

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

там прям в конструктор массив ссылок гонишь и работаешь

ну тут малость по другому - но тоже гуд

<?php
include_once '../MultiCurl.class.php';
class MyMultiCurl extends MultiCurl {
protected function onLoad($url, $content, $info) {
print "[$url] $content ";
print_r($info);
}
}

try {
$mc = new MyMultiCurl();
$mc->setMaxSessions(2); // limit 2 parallel sessions (by default 10)
$mc->setMaxSize(10240); // limit 10 Kb per session (by default 10 Mb)
$mc->addUrl('http://google.com');
$mc->addUrl('http://yahoo.com');
$mc->addUrl('http://altavista.com');
$mc->wait();
} catch (Exception $e) {
die($e->getMessage());
}


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
linklink26  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 118
Пользователь №: 24563
На форуме: 6 лет, 1 месяц, 11 дней
Карма:

Трезвый :
5 лет, 1 месяц, 7 дней


Не этот? http://artkiev.com/blog/php-curl_multi_init.htm

Ну в любом случает тенк, понятно куда копать в итоге 40 часов вместо 800 меня вполне устроит.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


linklink26
оОо. спасибо. это он!


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
linklink26  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 118
Пользователь №: 24563
На форуме: 6 лет, 1 месяц, 11 дней
Карма:

Трезвый :
5 лет, 1 месяц, 7 дней


Игорь_Vasinsky шикарно, надеюсь перенаправления тоже получится обойти с этой штукой)

UPD: вам спасибо =)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


ну короч взаимно rolleyes.gif


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Bolik  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 352
Пользователь №: 35724
На форуме: 4 года, 18 дней
Карма: 4




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

и да, лучше использовать pthreads. с мультикурлом как-то непонятно все да и не многопоточность это...
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


Bolik
это параллельность. в PHP многопоточность хитро реализуется, и то вроде не многопоточность, а толи псевдо толи как то. не интересовался подробно.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса