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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> записать мого узлов, нехватка памяти 
V
    Опции темы
armor85
Дата 9.5.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



Здравствуйте,

при попытке записать более 2000 узлов (в каждом ещё по пять узлов),
возникает ошибка:
  Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 50 bytes) in

может можно это както обойти?
PM MAIL   Вверх
Feldmarschall
Дата 9.5.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Для начала надо научиться быть немного информативнее в своих вопросах
PM   Вверх
skyboy
Дата 9.5.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



armor85, ограничения, наклывадемые на объем памяти, выделяемой РНР - 64 Мб. Ты их превысил в результате построения своей структуры(кстати, да, вопрос задан довольно туманно  smile ). 
1. Если можешь сменить генератор(или парсер - что ты там испольщуешь?), на такой, который не выгружает полностью дерево в память, а постоянно работает с файлом(вроде файла подкачки: взял необходимое, остальное - записал обратно в файл), то ты потеряешь в скорости, но обойдешь ограничение.
2. Если можешь сменить структуру данных, чтоб у тебя не требовалось 2000х5 узлов - ты обойдешь ограничение.
3. Если ты можешь сменить логику(алгоритм), чтоб не требовалось одновременно обрабатівать 2000х5 узлов, ты обойдешь ограничение.
А вопросы типа "у меня самолет не летает. что делать?" вызывают легкое раздражение - неужели тяжело было написать на два абзаца больше, но чтоб не вытягивать подробности по кусочкам?
PM MAIL   Вверх
armor85
Дата 9.5.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



Ошибку понял.

Записываю данные из базы данных MySQL, своего рода кэш, но для своих целей. 
Т.ё. 2000 товаров (например) с 5 параметрами, записываю из базы в xml в виде дерева.
Это действие выполняется один раз в час по cron. Каждый раз идёт обход всех товаров и всех
их свойств, файл переписывается полностью.

Сейчас использую domit, т.к. он легче в использовании. Но php dom была таже история.
SimpleXML нету.


Да и еще проблема, товаров может быть и 10000, а оно уже сейчас выделываться начинает.

Это сообщение отредактировал(а) armor85 - 9.5.2008, 14:25
PM MAIL   Вверх
armor85
Дата 11.5.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



Собственно вопрос решил, посадил всё на SimpleXML. 4000x5 полёт нормальный.

Но проблема: 
Код

$objXpath = new DOMXPath($doc);
$listPrices   = $objXpath->query('/rows/row/cell[@val="1"]');
if ($listPrices->length != 0) {
    foreach($listPrices as $price) {
     $price->nodeValue = intval(myFunc($price->getAttribute("default"), $currency, $price->nodeValue));
    }
}


Помогите переписать под SimpleXML.

Код

foreach ($xml->xpath('//cell[@val="1"]') as $t) {
echo $t->title. '<BR>';
}


$t->title почему-то пустой, хотя должно быть число.
PM MAIL   Вверх
Fortop
Дата 11.5.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(armor85 @  9.5.2008,  14:17 Найти цитируемый пост)
Записываю данные из базы данных MySQL, своего рода кэш, но для своих целей. 

armor85, ты уверен, что тебе нужен кеш, на xml?

Это сообщение отредактировал(а) Fortop - 11.5.2008, 17:31


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
armor85
Дата 12.5.2008, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



Fortop, уверен.

Код

$objXpath = new DOMXPath($doc);
$listPrices   = $objXpath->query('/rows/row');
if ($listPrices->length != 0) {
  foreach($listPrices as $price) {
   if (!(in_array($price->getAttribute("seller"), explode(",", $seller)))) { $price->parentNode->removeChild($price);}
  }
}


Помогите переделать под SimpleXML. И что я выше писал тоже.
PM MAIL   Вверх
Feldmarschall
Дата 12.5.2008, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Что-то мне тоже сомнительна польза  такого кэша
PM   Вверх
armor85
Дата 12.5.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



Feldmarschall, сразу скажу что это не КЭШ, это что-то типа кэша (самому смешно).

Эти файлы вроде снимка цен, по которым потом строится ценовые индексы.
Компонент который их строит работает с xml. Убиваю сразу двух зайцев, 
1. информация на определенное число, когда делался снимок, т.к. все в разных файлах
2. что что компонент просит (т.е. xml), то я ему и даю.

Вопрос актуален. ^^^
PM MAIL   Вверх
Fortop
Дата 12.5.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



armor85, Эти снимки дешевле, проще и удобнее хранить в БД.

И манипулировать с ними быстрее в БД, а не в XML.

Добавлено через 2 минуты и 14 секунд
Сделать же экспорт в XML - с полпинка.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
armor85
Дата 12.5.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



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

И вообще оставим тему целесообразности использования xml. Помогите лучше под simple всё переписать.
Кто поможет, + в репу. 
PM MAIL   Вверх
IZ@TOP
Дата 22.5.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



armor85, тебе не SimpleXML нужен, тебе нужен XMLWriter (т.е. SAX) http://ru2.php.net/XMLWriter.
Для чтения можно использовать XMLReader.
Это что касается объемов от 2Мб. SimpleXML и DOM работают нормально на объемах до 2Мб (ну и еще от сервера/количества памяти выделяемой для PHP зависит, но я бы не рекомендовал увеличивать ее объем).


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
armor85
Дата 28.5.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злой программер
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2007
Где: Сочи, блин!

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



IZ@TOP, Спасибо за совет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




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


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

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