Ir para conteúdo
Fórum Script Brasil
  • 0

Restaurar Banco de Dados Automaticamente


Guest caio_kizel

Pergunta

Guest caio_kizel

Caros Amigos,

Estou criando um sistema On-Line, com isso a amostra do sistema ficará na internet para os usuários usufruirem da maneira que quiserem, para testar.

Desta forma, os usuários poderão mexer em tudo: deletar, alterar dados, imagens, ETC...

Ai que está o meu problema, como que faço para que os arquivos do site e o conteúdo do banco de dados voltem a ficar DEFAULT (do jeito padrão, do jeito que eu inseri a primeira vez), para que o sistema não fique descaracterizado??

alguém pode me dar uma luz??

Abraços...

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Caros Amigos,

Estou criando um sistema On-Line, com isso a amostra do sistema ficará na internet para os usuários usufruirem da maneira que quiserem, para testar.

Desta forma, os usuários poderão mexer em tudo: deletar, alterar dados, imagens, ETC...

Ai que está o meu problema, como que faço para que os arquivos do site e o conteúdo do banco de dados voltem a ficar DEFAULT (do jeito padrão, do jeito que eu inseri a primeira vez), para que o sistema não fique descaracterizado??

alguém pode me dar uma luz??

Abraços...

(Leia sobre Temporary table e engine memory no manual do mysql.)

Crie as tabelas dinamicamente a cada conexão, carregando os dados da tabela física que ficará imutável. Coloque poucos registros. O suficiente para dar uma amostra das funcionalidades de seu programa ao usuário.

Ao final da conexão dê um drop nas tabelas temporárias.

Outra solução é criar um banco paralelo, fixo, que recarregará as informações no banco de teste (usado para sua demonstração) de tempos em tempos.

Outra forma é combinar a solução 1 com a solução 2. Ou seja A tabela temporária em memória com a recarga de tempos em tempos.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest caio_kizel

Denis,

Me corrija se eu estiver errado.

Eu terei que fazer o seguinte: Ao usuário entrar no site, farei um "CREATE TEMPORARY TABLE tabela_temp", depois irei selecionar os dados da tabela fixa e farei um INSERT dos dados selecionados na tabela temporária correto?

Esse script, terei que colocar na index para ele copiar todas as tabelas fixas de uma vez?, ou a cada consulta eu crio uma tabela fixa?

Agradeço a ajuda que me deu, agora a Luz acendeu, Obrigado!

Abraços,

Caio

Link para o comentário
Compartilhar em outros sites

  • 0
Guest caio_kizel

DUVIDA 2

Outra coisa que esqueci de mencionar,

Ao fazer os inserts (isso o usuário que está testando), esses deverão ser efetuados na tabela temporária correto?? (talvez essa pergunta é meio óbvia)

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Caio!

Respondendo as suas perguntas:

Eu terei que fazer o seguinte: Ao usuário entrar no site, farei um "CREATE TEMPORARY TABLE tabela_temp", depois irei selecionar os dados da tabela fixa e farei um INSERT dos dados selecionados na tabela temporária correto?
Sim.
Esse script, terei que colocar na index para ele copiar todas as tabelas fixas de uma vez?, ou a cada consulta eu crio uma tabela fixa?

Os valores residirão em uma tabela fixa. A cada acesso será criada uma tabela temporária e os dados da tabela fixa serão inseridos na tabela temporária.

Veja este tópico aqui do forum onde comento sobre como trabalhar com tabelas dinamicamente com nomes diferentes passados por parâmetros. Será útil a seu propósito.

Ao fazer os inserts (isso o usuário que está testando), esses deverão ser efetuados na tabela temporária correto?? (talvez essa pergunta é meio óbvia)
Sim.
Link para o comentário
Compartilhar em outros sites

  • 0

SURFMALUCO = caio_kizel é que antes eu não tinha logado...

Vamos lá...

Você diz:

Os valores residirão em uma tabela fixa. A cada acesso será criada uma tabela temporária e os dados da tabela fixa serão inseridos na tabela temporária.

Minha dúvida quanto a isso é o seguinte:

Eu disponho de uma área administrativa onde os usuários irão Alterar, incluir, excluir e deletar dados do site, com isso, como que eu vo fazer para que na página fora do admin o usuário veja os dados fixo, que podem ser removidos, alterados, etc, e também que ele visualize os dados que ele inseriu? isso não ficou muito claro para mim. Então com isso terei que criar a tabela temporária 1 vez e inserir todos os dados no momento que ele entra no site??

Outra pergunta, se tiver 10 usuários de uma vez como se comporta a tabela temporária, ele cria uma em cima da outra outra? ou é uma para cada sessão do banco?

To chato quantos as perguntas, mas é isso..hehe

Editado por surfmaluco
Link para o comentário
Compartilhar em outros sites

  • 0
Eu disponho de uma área administrativa onde os usuários irão Alterar, incluir, excluir e deletar dados do site, com isso, como que eu vo fazer para que na página fora do admin o usuário veja os dados fixo, que podem ser removidos, alterados, etc, e também que ele visualize os dados que ele inseriu? isso não ficou muito claro para mim. Então com isso terei que criar a tabela temporária 1 vez e inserir todos os dados no momento que ele entra no site??

Vou ser chato nas respostas. Não leve a mal. Você está querendo uma tarefa difícil e não está olhando o que te mandei antes.

Primeiro: O link anterior ensina como manipular/criar/apagar, ou seja, como executar dinamicamente uma instrição SQL. Se precisar de mais informações conte comigo.

Segundo: Você sabe o básico sobre SQL? Pois sua pergunta acima me informa que não. Veja, no manual do MySQL versão 4.1 em português, disponível para dowload no site da mysql, o capítulo 6, ensina sobre a sintaxe de como trabalhar com o SQL do MySQL.

Outra pergunta, se tiver 10 usuários de uma vez como se comporta a tabela temporária, ele cria uma em cima da outra outra? ou é uma para cada sessão do banco?

O mysql trabalha com threads. A cada conexão ele cria uma nova thread. Então, não importa se há 1 ou 1000 usuários. Você pode colocar um limite, para poder gerenciar melhor a performance do banco. Mas isto é outro ponto.

To chato quantos as perguntas, mas é isso..hehe
Não há problema em ser chato. é para isto que existe o fórum. Para perguntar e aprender. (Eu aprendo muito com vocês. eheh)
Link para o comentário
Compartilhar em outros sites

  • 0

Dennis,

Bom agradeço a atençã. O básico eu sei, dá pra me virar beleza hehehe...

Bom vamos lá

Eu criei 2 páginas para teste:

index.php

<?

include('config.php'); // dados para a conexão com o Servidor

mysql_query("CREATE TEMPORARY TABLE temp_tabela( ID int, Name char(100) ) TYPE=HEAP; ") or die(mysql_error()); // Cria a tabela temporária

mysql_query("INSERT INTO temp_tabelaVALUES( 1, 'teste'); ") or die(mysql_error());

$query = mysql_query("SELECT * FROM temp_tabela; ") or die(mysql_error());

$linha = mysql_fetch_array($query );

echo $id= $linha['ID']; // nessa visualização ele PRINTA os dados

echo $name = $linha['Name']; // nessa visualização ele PRINTA os dados

echo "<meta http-equiv=\"refresh\" content=\"3;url=visualiza.php\">"; // redireciona para outra página para ver se na outra página ele encontra a table temporaria

?>

visualiza.php

<?

include('config.php'); // dados para a conexão com o Servidor

###################### nessa linha dá erro, diz que a tabela temp_tabela não existe (( Table 'auto.temp_tabela' doesn't exist ))

$query = mysql_query("SELECT * FROM temp_tabela; ") or die(mysql_error()); // Select para pegar a tabela temporaria

$linha = mysql_fetch_array($query );

echo $id= $linha['ID'];

echo $name = $linha['Name'];

?>

Na primeira página (index.php) ele me devolve os dados certinho, na segunda (vizualiza.php) ele não encontra a tabela...

Agora vai a minha pergunta, qual o possível motivo de estar acontecendo isso? está parecendo que a cada conexão ele perde a tabela temporária...

Talves eu entendi errado, a tabela temporária não se comunica entre páginas?? talves a solução para mim seria: recarregar as informações no banco de teste (usado para sua demonstração) de tempos em tempos.

Editado por surfmaluco
Link para o comentário
Compartilhar em outros sites

  • 0
Denis,

Na primeira página (index.php) ele me devolve os dados certinho, na segunda (vizualiza.php) ele não encontra a tabela...

Agora vai a minha pergunta, qual o possível motivo de estar acontecendo isso? está parecendo que a cada conexão ele perde a tabela temporária...

Talves eu entendi errado, a tabela temporária não se comunica entre páginas?? talves a solução para mim seria: recarregar as informações no banco de teste (usado para sua demonstração) de tempos em tempos.

Esta foi a idéia. Já que o que você passou foi a idéia de um DEMO então a tabela exeiste apenas durante aquela conexão e somente para um usuário. Outro usuário em outra conexão terá a mesma tabela com outro nome fazendo a bagunça que quizer durante o tempo da conexão deste.

Link para o comentário
Compartilhar em outros sites

  • 0

Dennis,

Como eu faco para o BD carregar automaticamente as informações de tempos em tempos?

Tipo a cada 24 horas ele volta com as informações iniciais?

A tabela temporária não serve para meu problema, pois toda hora vai atualizar as páginas e abrir novas conexões com o banco...

Abraços

Caio

Link para o comentário
Compartilhar em outros sites

  • 0
Dennis,

Como eu faco para o BD carregar automaticamente as informações de tempos em tempos?

Tipo a cada 24 horas ele volta com as informações iniciais?

A tabela temporária não serve para meu problema, pois toda hora vai atualizar as páginas e abrir novas conexões com o banco...

Abraços

Caio

A versão 5.1 do Mysql vem equipada com schedule. Neste caso você teria que criar uma stored procedure e colocá-la no schedule.

Se você usa uma versão do MySQL anterior a 5.1, então a solução é criar uma rotina de programação, em uma linguagem qualquer, e executá-la através de um serviço de schedule do seu sistema operacional, tal como o cron no linux ou o utilitário de tarefas agendadas do windows XP.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom,

Faz um tempo que estive fora mas irei retomar o pensamento.

Esse BD fica hospedado online, e meu projeto também. Eu quero que, por exemplo, de 12 em 12 horas ou de 24 em 24 horas, ele restaure o banco de dados com as informações originais, as que eu inseri automaticamente, sem eu ter que mexer?. Dessa forma o projeto não ficaria descaracterizado. Com Tempórary não dá... Tem alguma forma de fazer isso que eu falei?

Abraços.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...