Вот код:
<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
ini_set('memory_limit', '256M');
$result = db_query("SELECT n.nid FROM {node} n WHERE n.nid >%d LIMIT 0,5", variable_get('current_updated_nid2', 0));
while($nid = db_fetch_object($result)) {
$node = node_load($nid->nid);
node_save($node);
variable_set('current_updated_nid2', $node->nid);
}
?>
Который перебирает 5 нод, загружает их и просто пересохраняет, чтобы в базе обновились значения вычисляемых полей.
Но данный скрипт вылетает с ошибкой:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 35 bytes) in /sites/all/modules/i18n/i18nsync/i18nsync.module on line 396
перезапусал апач, перезагружал сервер, увеличивал память до 1Gb - ничего не помогает.
Комментарии
Упростил задачу до следующего:
<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
ini_set('memory_limit', '256M');
$node = node_load(3330);
node_save($node);
?>
И все-равно та же ошибка.
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 35 bytes) in /sites/all/modules/i18n/i18nsync/i18nsync.module on line 396
Я бы заглянул in /sites/all/modules/i18n/i18nsync/i18nsync.module on line 396. Это же опенсорс. Возможно там собака зарыта, а возможно и нет. Какой-то модуль есть всю память, т.к. на чистом ядре у меня Ваш первый скрипт отрабатывает за 100ms.
Таки да:
в этой строчке происходит синхронизация перевода картинок, и именно этот кусок жрет память. Для меня это не критично, поэтому закоментил этот кусок:
<?php
foreach ($translation->$field as $translation_image) {
if ($file['fid'] == $translation_image['fid']) {
$translated_images[] = $translation_image;
$found = true;
}
}
?>
И все стало выполнятся. Спасибо