numero_serie
id_numero_serie PK auto_increment
nu_serie VARCHAR(3)
numero_sorte
id_numero_sorte PK auto_increment
nu_sorte VARCHAR(5)
transacao_numero_sorte
id_numero_serie PK FK -> numero_serie
id_numero_sorte PK FK -> numero_sorte
id_transacao FK -> transacao
Hudson, acredito que seria interessante fazer um profiling da sua aplicação. Assim você pode ver onde tem um maior gargalo e aplicar alguma melhoria, como dar unset em variáveis não utilizadas. Talvez usar uma conexão persistente com o banco de dados possa ajudar também.
Não consigo pensar em muita coisa no momento.
Talvez se você configurar o banco pra gravar os dados e na ram e de tempos em tempos salvar em disco, a performance aumente. Você pode dar mais detalhes?
Atenciosamente,
Mayck Xavier
Lab01 Tecnologia
www.lab01.com.br
21-9-8100-4206
Enviado por telefone
--
Você está recebendo esta mensagem porque se inscreveu no grupo "PHP Architect" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para php-architec...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
--
protected function gerarNumeroSorte(){try {$idNumeroSerie = $this->listaNumeroSerie[mt_rand(0, self::MAX_SERIAL_NUMBER)]['id_numero_serie'];$idNumeroSorte = $this->listaNumeroSorte[mt_rand(0, self::MAX_SELECTED_NUMBER)]['id_numero_sorte'];$sql = 'INSERT INTO transacao_numero_sorte (id_sorteio, id_numero_serie, id_numero_sorte, id_transacao)VALUES (' . $this->transacao->id_sorteio . ', ' . $idNumeroSerie . ', ' . $idNumeroSorte . ', ' . $this->transacao->id_transacao . ')';$this->container['db']->exec($sql);} catch(\PDOException $e) {$this->gerarNumeroSorte();}}
-- Considerem que essa transação possui 100 números a serem distribuídos
SELECT '1', x.id_numero_serie, y.id_numero_sorteFROM(SELECT *FROM (SELECT @cnt := COUNT(*) + 1,@lim := 10FROM numero_serie) varsSTRAIGHT_JOIN(SELECT r.*,@lim := @lim - 1FROM numero_serie rWHERE (@cnt := @cnt - 1)AND RAND() < @lim / @cnt) i) xJOIN(SELECT *FROM (SELECT @cnt := COUNT(*) + 1,@lim := 10FROM numero_sorte) varsSTRAIGHT_JOIN(SELECT r.*,@lim := @lim - 1FROM numero_sorte rWHERE (@cnt := @cnt - 1)AND RAND() < @lim / @cnt) i) yWHERECONCAT(x.nu_serie, y.nu_sorteavel) NOT IN (SELECT CONCAT(ns2.nu_serie, nss2.nu_sorteavel) FROM transacao_numero_sorte tnsINNER JOIN numero_serie ns2 ON tns.id_numero_serie = ns2.id_numero_serieINNER JOIN numero_sorte nss2 ON tns.id_numero_sorte = nss2.id_numero_sorte)LIMIT 100;
Visualizar meu perfilNos comunique da solução.Bom, vejo que você pode usar um terceiro elemento ai (sqlite, mongodb) para colecionar os números já utilizados. Utilizar uma coleção com milhões de números pré-gerados poderia te ajudar um pouco.Gerar os números sob demanda caso excedesse os pré-gerados não iria te consumir muito recurso.
Atenciosamente,
Evaldo Barbosa
Analista de Sistemas / Desenvolvedor Web
ESTOU SUBSTITUINDO ESSA CAIXA DE E-MAIL PELA:
> evaldo...@gmail.com
Visualizar meu perfil
http://www.vivaolinux.com.br/~collapse
http://www.twitter.com/evaldobarbosa
--
Você está recebendo esta mensagem porque se inscreveu no grupo "PHP Architect" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para php-architec...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Não temos muitas informações. Talvez o sistema já contemple a sugestão apresentada. Más, se cada linha do arquivo verificado, após os ajustes é feito um insert, pode ser lento. Talvez agrupando os dados para inserir em lote pode melhorar os resultados.--------------------------------------------------------Daniel MaffiolettiBrasília-DF
--
Você está recebendo esta mensagem porque se inscreveu no grupo "PHP Architect" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para php-architec...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
22 de janeiro de 2014 10:26
Como estão atualmente a leitura dos arquivos de texto e as inserções no banco de dados? Se possível tente explicar ou mostrar como se dá esse processo.
--
Você está recebendo esta mensagem porque se inscreveu no grupo "PHP Architect" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para php-architec...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.