[Решено] Drupal и потребление памяти

Главные вкладки

Аватар пользователя divined divined 16 августа 2011 в 10:51

Вот код:

<?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 - ничего не помогает.

Комментарии

Аватар пользователя divined divined 16 августа 2011 в 11:22

Упростил задачу до следующего:

<?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

Аватар пользователя vgoodvin vgoodvin 16 августа 2011 в 11:36

Я бы заглянул in /sites/all/modules/i18n/i18nsync/i18nsync.module on line 396. Это же опенсорс. Возможно там собака зарыта, а возможно и нет. Какой-то модуль есть всю память, т.к. на чистом ядре у меня Ваш первый скрипт отрабатывает за 100ms.

Аватар пользователя divined divined 16 августа 2011 в 11:44

Таки да:

в этой строчке происходит синхронизация перевода картинок, и именно этот кусок жрет память. Для меня это не критично, поэтому закоментил этот кусок:

<?php
foreach ($translation->$field as $translation_image) {
        if (
$file['fid'] == $translation_image['fid']) {
          
$translated_images[] = $translation_image;
          
$found true;
        }
      }
?>

И все стало выполнятся. Спасибо