使用while循环从TXT文件导入数据

时间:2016-05-09 09:06:57

标签: php drupal

我的问题是我不知道如何在导入所有行时完成while循环。这是Drupal 7.

如果我设置此while条件:while ($row = $regs->fetchAssoc())它永远不会进入循环。

如果我使用这个条件来打破循环:

  $cadena = array();
  while (1) {
  $row = $regs->fetchAssoc();
  $cadena[] = $row;
  if (count($cadena)<0){
  break;}

我收到此错误:Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 64 bytes)

完整的代码是:

 $operations = array();
 $items = array();
 $limit = 25;
 $i = 0;

$regs =  db_query("SELECT * FROM {table_import_apunte} WHERE field_processed = :processed", array(':processed' => 0));

    while ($row = $regs->fetchAssoc()) {
            if ($i < $limit) {
                $items[] = $row;
                $i += 1;
            } else {
                $operations[] = array('csvImporter_create_nodes', array($items, 'apunte'));
                $items = array();
                $items[] = $row;            
                $i = 1;
           }      
        }

        $batch = array(
        ...
        );

1 个答案:

答案 0 :(得分:0)

您使用while(1) { ... }的方法会创建一个无限循环,因为将一个元素附加到数组&#39; cadena&#39;导致计数高于0加上计数不能低于0

你可以尝试使用foreach而不是一会儿

foreach ($regs as $row) { ... }