Вопрос таков: как заставить корректно работать node_save? При запуске из самописного модуля, в логи апача вываливается "PHP Fatal error: Allowed memory size of 36700160 bytes exhausted (tried to allocate 322980 bytes) in /home/www/includes/database.mysql-common.inc on line 41" (каждый раз разная строка, причем!). Периодически по таймауту завершался. Сохранение же материалов проходит безо всяких проблем. Вызов функции происходит внутри hook_nodeapi.
Комментарии
Структуру объекта $node в студию !
(
[nid] => 145
[type] => video
[language] => ru
[uid] => 1
[status] => 1
[created] => 1345837041
[changed] => 1349627634
[comment] => 2
[promote] => 1
[moderate] => 0
[sticky] => 0
[tnid] => 0
[translate] => 0
[vid] => 145
[revision_uid] => 1
[title] => 123
[teaser] => <div class="field field-type-filefield field-field-cover">
<div class="field-items">
<div class="field-item odd">
<img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" /> </div>
</div>
</div>
<p></p>
[log] =>
[revision_timestamp] => 1349627634
[format] => 0
[name] => Dimedrius
[picture] =>
[data] => a:4:{s:14:"picture_delete";s:0:"";s:14:"picture_upload";s:0:"";s:3:"dst";s:13:"Europe/Moscow";s:13:"form_build_id";s:37:"form-6aa93bbdd3b9cd48749d80a0a263050e";}
[field_cover] => Array
(
[0] => Array
(
[fid] => 1649
[uid] => 1
[filename] => 1649.jpg
[filepath] => sites/files/video/cover/1649.jpg
[filemime] => image/jpeg
[filesize] => 81923
[status] => 1
[timestamp] => 1349616009
[origname] =>
[list] => 1
[data] => Array
(
[alt] =>
[title] =>
)
[nid] => 145
[view] => <img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" />
)
)
[field_video] => Array
(
[0] => Array
(
[fid] => 1629
[uid] => 1
[filename] => 1629.mp4
[filepath] => sites/files/video/originals/1629.mp4
[filemime] => video/mp4
[filesize] => 54646259
[status] => 1
[timestamp] => 1345837039
[origname] =>
[list] => 1
[data] =>
[nid] => 145
)
)
[path] => video/145
[last_comment_timestamp] => 1345837041
[last_comment_name] =>
[comment_count] => 0
[taxonomy] => Array
(
[11] => stdClass Object
(
[tid] => 11
[vid] => 9
[name] => Видео
[description] =>
[weight] => 0
[v_weight_unused] => 0
)
)
[build_mode] => 0
[readmore] =>
[content] => Array
(
[field_cover] => Array
(
[#type_name] => video
[#context] => teaser
[#field_name] => field_cover
[#post_render] => Array
(
[0] => content_field_wrapper_post_render
)
[#weight] => -4
[field] => Array
(
[#description] =>
[items] => Array
(
[0] => Array
(
[#formatter] => image_plain
[#node] => stdClass Object
*RECURSION*
[#type_name] => video
[#field_name] => field_cover
[#weight] => 0
[#theme] => imagefield_formatter_image_plain
[#item] => Array
(
[fid] => 1649
[uid] => 1
[filename] => 1649.jpg
[filepath] => sites/files/video/cover/1649.jpg
[filemime] => image/jpeg
[filesize] => 81923
[status] => 1
[timestamp] => 1349616009
[origname] =>
[list] => 1
[data] => Array
(
[alt] =>
[title] =>
)
[nid] => 145
[#delta] => 0
)
[#title] =>
[#description] =>
[#theme_used] => 1
[#printed] => 1
[#type] =>
[#value] =>
[#prefix] =>
[#suffix] =>
[#children] => <img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" />
)
[#title] =>
[#description] =>
[#children] => <img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" />
[#printed] => 1
)
[#single] => 1
[#attributes] => Array
(
)
[#required] =>
[#parents] => Array
(
)
[#tree] =>
[#context] => teaser
[#page] =>
[#field_name] => field_cover
[#title] => Обложка
[#access] => 1
[#label_display] => hidden
[#teaser] => 1
[#node] => stdClass Object
*RECURSION*
[#type] => content_field
[#children] => <img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" />
[#printed] => 1
)
[#title] =>
[#description] =>
[#children] => <div class="field field-type-filefield field-field-cover">
<div class="field-items">
<div class="field-item odd">
<img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" /> </div>
</div>
</div>
[#printed] => 1
)
[#content_extra_fields] => Array
(
[title] => Array
(
[label] => Заголовок
[description] => Форма модуля материалов
[weight] => -5
)
[revision_information] => Array
(
[label] => Информация о редакции
[description] => Форма модуля материалов
[weight] => 0
)
[author] => Array
(
[label] => Информация об авторе
[description] => Форма модуля материалов
[weight] => 1
)
[options] => Array
(
[label] => Настройки публикации
[description] => Форма модуля материалов
[weight] => 2
)
[comment_settings] => Array
(
[label] => Установки комментариев
[description] => Форма комментария модуля.
[weight] => 3
)
[menu] => Array
(
[label] => Параметры меню
[description] => Форма модуля меню.
[weight] => -1
)
[taxonomy] => Array
(
[label] => Таксономия
[description] => Форма терминов таксономии
[weight] => -2
)
[path] => Array
(
[label] => Настройки пути
[description] => Форма настроек пути
[weight] => 4
)
)
[#pre_render] => Array
(
[0] => content_alter_extra_weights
)
[body] => Array
(
[#weight] => 0
[#value] => <p></p>
[#title] =>
[#description] =>
[#printed] => 1
)
[#title] =>
[#description] =>
[#children] => <div class="field field-type-filefield field-field-cover">
<div class="field-items">
<div class="field-item odd">
<img class="imagefield imagefield-field_cover" width="550" height="281" alt="" src="http://site.ru/sites/files/video/cover/1649.jpg?1349616009" /> </div>
</div>
</div>
<p></p>
[#printed] => 1
)
[links] => Array
(
[comment_add] => Array
(
[title] => Добавить комментарий
[href] => comment/reply/145
[attributes] => Array
(
[title] => Добавить на эту страницу комментарий.
)
[fragment] => comment-form
)
)
)
А такой сохраняет ?
'uid' => $user->uid,
'name' => (isset($user->name) ? $user->name : ''),
'type' => 'page',
'status' => 1,
'promote' => 0,
'sticky' => 0,
'created' => time(),
'revision' => 0,
'comment' => 1,
'path' => array(
'alias' => 0,
'pid' => 0,
'source' => 0,
'language' => LANGUAGE_NONE,
),
);
хмм, а это не объект шаблона?
Начинать надо с шаблона, и если непонятно когда ломается - можно методом "двоичного деления" добавлять поля.
Да, видимо так оно и было. Теперь произвожу запись напрямую в бд.
так оно и есть..
Надо или другой хук использовать или при перед сохранением ноды добавлять флаг($node->my_updated=TRUE;)
И проверять его наличие при сохранении..