Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tupinikin

Números randômicos se repetindo muitas vezes.

Recommended Posts

Até alguns dias atrás eu usava a LocaWeb e tive que trocar de servidor, pois iriam desativar a maquina que eu usava

e com o trecho do código abaixo, os números quase não se repetiam.

Ao alterar para um servidor na redehost com centos 6, os números começaram a se repetir MUITAS VEZES.

ex: de 120 registros, as vezes duplica 10.

 

 

$cod_cadastro = addslashes($_GET["cod_cadastro"]);
// gera o codigo de barras
                                        for($i=0; $i<20; $i++)
                                        {
                                            $cod_barras = $cod_cadastro;
                                            $n = strlen($cod_barras);
                                            for ($j=0; $j<5-$n; $j++)
                                                $cod_barras = "0".$cod_barras;
                                            // gera numero randomico                                        
                                            $n_rand = mt_rand(1000000,9999999);
                                            $cod_barras = $n_rand."".$cod_barras;
                                        }

Versão do PHP 5.3.3

Servidor CentOs 6 X64

Zpanel

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode adicionar a função uniqid()

uniqid();

http://www.w3schools.com/php/func_misc_uniqid.asp

 

Ou você pode fazer uma verificação antes para ver se o número já existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode adicionar a função uniqid()

uniqid();

http://www.w3schools.com/php/func_misc_uniqid.asp

 

Ou você pode fazer uma verificação antes para ver se o número já existe.

Alarte, obrigado;

 

acho que resolveu meu problema.

Ficou assim.

  function soNumero($str) {
    return preg_replace("/[^0-9]/", "", $str);
}

 $codigo_completo= soNumero(uniqid(rand(), true));
   $codigo = substr($codigo_completo,0,12);

Cadastrei um milhão de registros e eles se repetiram 20 vezes, totalmente aceitável.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.