2010-06-12 4 views
2

Я пытаюсь настроить крошечную песочницу на локальной машине, чтобы поиграть с Drupal. Я создал несколько типов CCK; для того, чтобы создать несколько узлов Я написал следующий скрипт:PHP выдает «Разрешенные ошибки памяти» при переносе данных в Drupal

chdir('C:\..\drupal'); 

require_once '.\includes\bootstrap.inc'; 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
module_load_include('inc', 'node', 'node.pages'); 

$node = array('type' => 'my_type'); 

$link = mysql_connect(..); 
mysql_select_db('my_db'); 

$query_bldg = ' 
    SELECT stuff 
    FROM table 
    LIMIT 10 
'; 

$result = mysql_query($query_bldg); 

while ($row = mysql_fetch_object($result)) { 

$form_state = array(); 

$form_state['values']['name'] = 'admin'; 
$form_state['values']['status'] = 1; 
$form_state['values']['op'] = t('Save'); 

$form_state['values']['title'] = $row->val_a; 
$form_state['values']['my_field'][0]['value'] = $row->val_b; 
## About another dozen or so of similar assignments... 

drupal_execute('node_form', $form_state, (object)$node); 

} 

Вот несколько соответствующих строк из php_errors.log:

[12-Jun-2010 05:02:47] PHP Notice: Undefined index: REMOTE_ADDR in C:\..\drupal\includes\bootstrap.inc on line 1299 
[12-Jun-2010 05:02:47] PHP Notice: Undefined index: REMOTE_ADDR in C:\..\drupal\includes\bootstrap.inc on line 1299 
[12-Jun-2010 05:02:47] PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\..\drupal\includes\bootstrap.inc:1299) in C:\..\drupal\includes\bootstrap.inc on line 1143 
[12-Jun-2010 05:02:47] PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\..\drupal\includes\bootstrap.inc:1299) in C:\..\drupal\includes\bootstrap.inc on line 1143 
[12-Jun-2010 05:02:47] PHP Warning: Cannot modify header information - headers already sent by (output started at C:\..\drupal\includes\bootstrap.inc:1299) in C:\..\drupal\includes\bootstrap.inc on line 709 
[12-Jun-2010 05:02:47] PHP Warning: Cannot modify header information - headers already sent by (output started at C:\..\drupal\includes\bootstrap.inc:1299) in C:\..\drupal\includes\bootstrap.inc on line 710 
[12-Jun-2010 05:02:47] PHP Warning: Cannot modify header information - headers already sent by (output started at C:\..\drupal\includes\bootstrap.inc:1299) in C:\..\drupal\includes\bootstrap.inc on line 711 
[12-Jun-2010 05:02:47] PHP Warning: Cannot modify header information - headers already sent by (output started at C:\..\drupal\includes\bootstrap.inc:1299) in C:\..\drupal\includes\bootstrap.inc on line 712 
[12-Jun-2010 05:02:47] PHP Notice: Undefined index: REMOTE_ADDR in C:\..\drupal\includes\bootstrap.inc on line 1299 
[12-Jun-2010 05:02:48] PHP Fatal error: Allowed memory size of 239075328 bytes exhau sted (tried to allocate 261904 bytes) in C:\..\drupal\includes\form.inc on line 488 
[12-Jun-2010 05:03:22] PHP Fatal error: Allowed memory size of 239075328 bytes exhausted (tried to allocate 261904 bytes) in C:\..\drupal\includes\form.inc on line 488 
[12-Jun-2010 05:04:34] PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0 

На данный момент какие-либо действия PHP принимает результаты в последней ошибке показано выше. Я попытался увеличить значение memory_limit в php.ini до последней Fatal ошибки, которая явно не помогла.

Как можно устранить ошибку? Имею ли я правильный путь к переносу данных в Drupal или должны ли работать таблицы cck напрямую?

Windows XP
PHP 5.3.2 VC6
Apache 2,2

+0

Поскольку ваша фатальная ошибка связана с памятью, попробуйте выделить больше памяти. – Andreas

+0

Это первое, что я пробовал. Я не думаю, что выход за пределы 512 МБ - это приемлемое решение. – Stan

ответ

0

, что именно в том, что 'node_form' вызов делать? Я предполагаю, что это данные $ form_state и создание из него огромной структуры памяти. Это означает, что:

а) Вы должны увеличить (или исключить) максимальный объем памяти - Друпала здания что-то большое, и вы не давая ему запас работать

б) Измените node_form материал, таким образом он строит меньшие куски за раз. Может быть, сбрасывать выходные данные клиенту с интервалом? Сохранить на диск?

Смежные вопросы