Здравствуйте. Столкнулся со следующей проблемой. Есть 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 (есть ли в этом смысл)?? Или нужно покупать выделенный хостинг?? Буду очень благодарен всем, кто решит помочь ))
Что-то я немного не понял, это на платном хостинге Код (Text): php_value memory_limit 128M такое прописывали в .htacces? Правда работает? P.S. Даже если запускать скрипт по крону раз в сутки, то не тянуть же все заново...
Да на платном хостинге подобное работает Каждый раз парсится все заново, но в базу заносятся только новые товары, а те товары, которых на сайте уже нет - удаляются из базы
я бы чисто теоретически использовал YQL когда-то я так и делал, нужно было получать с разных сайтов rss и вот я использовал. данные уже приходили в json было хорошо.
shurik330, если вы используете парсер, который держит всю структуру в памяти и не освобождает ее, вы обречены на подобные ошибки, сколько бы памяти не запросили. переделайте алгоритм так, чтобы данные скидывались в БД как только это становится возможным и затем unset(x). а дальше пусть все связи через SQL делаются.