2016-05-09 4 views
0

私の問題は、すべての行をインポートするときにループ中にどのように終了するかわかりません。これはDrupal 7です。whileループでTXTファイルからデータをインポートする

これを設定すると、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)

完全なコードは次のとおりです。while(1) { ... }

$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(
     ... 
     ); 

答えて

0

あなたのアプローチは、無限ループを作成し、配列 'cadena'に要素を付けると、カウントは0より大きくなり、カウントは0より小さくなります。

代わりにforeachを使用できます。

foreach ($regs as $row) { ... } 
関連する問題