Столкнулся со следующей проблемой.
Есть 8 сайтов с разными товарами. На каждом из сайтов, примерно по 250 товаров.
Я спарсил все товары только с одного сайта. По полученной ссылки на товар я спарсил описание и адрес. Отправил все в базу данных.
Проделывая вышеупомянутые действия вылетала ошибка: Fatal error: Allowed memory size of 73400320 bytes exhausted (tried to allocate 72 bytes) in...
Решил данную проблему с помощью файла .htaccess (php_value memory_limit 128M). Далее мне нужно провести геокодирование полученных адресов, что еще сожрет памяти. Также остается проделать тоже самое еще с 7-ю сайтами. Я еще не пробовал, но думаю, что хостинг, на котором лежит сайт, не выдержит.
Как можно выйти из подобной ситуации?
Можно ли все действия разбить на отдельные файлы и подключить потом их через include или require (есть ли в этом смысл)??
Или нужно покупать выделенный хостинг??
Буду очень благодарен всем, кто решит помочь ))
Спустя 4 минуты, 57 секунд (12.12.2011 - 15:39) Игорь_Vasinsky написал(а):
чёт ты сложное написал я укладывался в память по умолчанию и парсил 11000 товаров.
тебе нужно пересмотреть алгоритм своего парсера
тебе нужно пересмотреть алгоритм своего парсера
Спустя 3 минуты, 57 секунд (12.12.2011 - 15:43) shurik330 написал(а):
Цитата (Игорь_Vasinsky @ 12.12.2011 - 12:39) |
чёт ты сложное написал я укладывался в память по умолчанию и парсил 11000 товаров. тебе нужно пересмотреть алгоритм своего парсера |
Я пользовался simpleHTMLdom
Это может повлиять?
Спустя 2 минуты, 44 секунды (12.12.2011 - 15:46) Michael написал(а):
может
Спустя 1 минута, 6 секунд (12.12.2011 - 15:47) Игорь_Vasinsky написал(а):
Ооо ещё как!
перепиши на регулярки - увидишь как скорость возрастёт - и памяти жрать не будет.
перепиши на регулярки - увидишь как скорость возрастёт - и памяти жрать не будет.
Спустя 7 минут, 14 секунд (12.12.2011 - 15:54) shurik330 написал(а):
Цитата (Игорь_Vasinsky @ 12.12.2011 - 12:47) |
Ооо ещё как! перепиши на регулярки - увидишь как скорость возрастёт - и памяти жрать не будет. |
Регулярки, т.е как-то так??
$HtmlContant = file_get_contents('http://www.sait.ru');
$Position = strpos($HtmlContant, '<div class="links">');
$HtmlContant = substr($HtmlContant, $Position);
$Position = strpos($HtmlContant, '</div>');
$HtmlContant = substr($HtmlContant, 0, $Position);
echo $HtmlContant;
Или не так?
Спустя 3 минуты, 2 секунды (12.12.2011 - 15:57) Игорь_Vasinsky написал(а):
в основном preg_match() или preg_match_all()
с паттернами для поиска
с паттернами для поиска
preg_match("#<div class=\"links\">([^<].*)</div>#iusU", $html);
Спустя 6 минут, 41 секунда (12.12.2011 - 16:04) shurik330 написал(а):
Цитата (Игорь_Vasinsky @ 12.12.2011 - 12:57) |
в основном preg_match() или preg_match_all() с паттернами для поиска preg_match("#<div class=\"links\">([^<].*)</div>#iusU", $html); |
Интересно! Можете дать ссылку на какой-нибудь хороший мануал?
Спустя 24 минуты, 32 секунды (12.12.2011 - 16:29) m4a1fox написал(а):
shurik330
http://irbis-team.com/15/20
http://irbis-team.com/15/20
Спустя 2 минуты, 4 секунды (12.12.2011 - 16:31) m4a1fox написал(а):
Упс! Не туда!
Спустя 2 часа, 14 минут, 57 секунд (12.12.2011 - 18:46) Игорь_Vasinsky написал(а):
Спустя 17 часов, 4 минуты, 44 секунды (13.12.2011 - 11:50) shurik330 написал(а):
Цитата (Игорь_Vasinsky @ 12.12.2011 - 12:47) |
Ооо ещё как! перепиши на регулярки - увидишь как скорость возрастёт - и памяти жрать не будет. |
По поводу регулярных выражений:
<div class="wrap_butGen" style=" float: right; margin: 2px 0 2px 0;"> <a href="http://www.sait.ru/deals/orsiobook-50/">
<div class="buttonGeneral" style=" padding: 9px 10px 9px 10px;">Подробнее</div>
</a>
</div>
код с сайта. Мне нужно вытащить ссылку (только http://www.sait.ru/deals/orsiobok-50/).
Как через регулярные выражения это можно сделать?
Спустя 28 минут, 26 секунд (13.12.2011 - 12:19) Игорь_Vasinsky написал(а):
попробуй этот паттерн
#(^\"http.*[^\"])#iusU
Спустя 26 минут, 18 секунд (13.12.2011 - 12:45) shurik330 написал(а):
Цитата (Игорь_Vasinsky @ 13.12.2011 - 09:19) |
попробуй этот паттерн#(^\"http.*[^\"])#iusU |
так он выберет все ссылки на сайте, а нужно только ссылки на товар.
Они находятся в <div> контейнере со следующими стилями
style=" float: right; margin: 2px 0 2px 0;"
Спустя 2 минуты, 12 секунд (13.12.2011 - 12:47) Семён написал(а):
Игорь,продай ему свой чудо парсер))
Спустя 13 минут, 30 секунд (13.12.2011 - 13:01) Игорь_Vasinsky написал(а):
нет. они все специализированные.
ТС. :D :D :D так ты какой кусок кода дал - я для него и паттерн написал!
ТС. :D :D :D так ты какой кусок кода дал - я для него и паттерн написал!
#<div class=\"wrap_butGen\" style=\" float\: right; margin\: 2px 0 2px 0;\">\s+<a href=\"([^\"].*)\">#iusU