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;
Nos 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.