Yield - menos memoria

<< Click to Display Table of Contents >>

Navigation:  Segurança e Otimização >

Yield - menos memoria

Previous pageReturn to chapter overviewNext page

 

Jeito errado

 

// jeito errado - se rodar isso aqui, pode dar "out of memory" ou demorar muito para rodar:
 
function mostraDatas($dias){ 
 
   $datas = [];    
    for ($dia = 1$dia < $dias$dia ++ ) {
        $datas[] = date("d/m/Y"strtotime("+{$dia} days"));
    }
    
    return $datas;
}
 
echo "<div style='text-align: center'>";
 
$qtd = 400000;
 
foreach (mostraDatas($qtdas $data) {
    echo "<small class='tag'>{$data}</small>".PHP_EOL;    
}
echo "</div>";

 

Jeito certo

 

// Faz tudo que o anterior mas não usa memoria do servidor
 
function geradorData($dias)  {
    for ($dia = 1$dia < $dias$dia ++ ) {
        yield date("d/m/Y"strtotime("+{$dia} days"));
    }
}
 
echo "<div style='text-align: center'>";
 
$quantidade = 400000;
 
foreach (geradorData($quantidadeas $data) {
    echo "<small class='tag'>{$data}</small>".PHP_EOL;    
}
echo "</div>";