Geralmente nos enganamos ao desenvolver uma aplicação sem pensar no futuro. Não é impossível que o banco de dados que você usa hoje torne-se inviável no futuro e você precise reescrever sua aplicação para utilizar outro banco. É justamente aí que usar uma classe bem desenhada para bancos de dados faz toda a diferença.
O banco de dados freqüentemente é culpado pela baixa performance
do sistema. Não ter que repetir queries ao banco já é um bom
caminho para melhorar o desempenho. Elas podem ser cacheadas
guardando páginas inteiras, ou se você assim quer gerar uma
página dinâmica, mas quer que somente a query seja guardada,
você pode guardar somente os resultados, seja qual for, o ADODB
permite que você faça facilmente! Antes, no entanto, de você
salvar em cache para melhorar a performance, é aconselhável que
você otimize sua query. Alguns índices simples podem fazer toda
a diferença.
Agora deixe-me mostrar como ADODB permite que você armazene
resultado de queries. Neste exemplo, baseado na query que nós
rodamos na última vez, ADODB armazena os resultados em um
arquivo em /var/tmp/ADODB_CACHE por 10 minutos após a
query ter sido feita pela 1° vez.
include "$adodb_path/db_values.inc.php";
include "$adodb_path/adodb.inc.php";
$db- = NewADOConnection("$database_type");
$db->Connect("$host", "$usuario", "$senha", "$banco");
$ADODB_CACHE_DIR = "/var/tmp/adodb_cache"; //diretório para armazenar arquivos de cache.
$sql = "SELECT sobrenome, idade FROM funcionarios";
$rs = $db->CacheExecute(600, $sql); //executa e guarda os resutlados por 600 segundos.
if (!$rs) {
print $rs->ErrorMsg(); //mostra mensagem de erro
} // fim do IF
else {
while (!$rs->EOF) {
print $rs->fields[0]." ".$rs->fields[1]."<br>";
//fields[0] é sobrenome e fields[1] é a idade
$rs->MoveNext(); //Mover para o próximo registro
} //fim do WHILE
} // fim do ELSE
A função CacheExecute pega dois argumentos:
o primeiro é o tempo de vida do cache (em segundos);
o segundo é a declaração SQL.
O primeiro é opcional, se você não especificar ele assume o valor
padrão de 3600 segundos (1 hora). Os arquivos recebem o nome no
seguinte formato: ADODB_*.CACHE e você pode deletá-los com
segurança após ter rodado bem o sistema. Você deve adicionar no
cron ou no gerenciador de tarefas rotinas para apagar os
arquivos de cache expirados.
Note que o parâmetro booleano do PHP MAGIC_QUOTES_RUNTIME deve
ser desligado para o cache poder trabalhar. Você pode alterar
isso se necessário em tempo de execução adicionando
SET_MAGIC_QUOTES_RUNTIME(0) em seu código antes de chamar a
classe de banco de dados.
Você pode também limpar o cache a qualquer hora chamando a
função CACHE_FLUSH(). Também é recomendado que o parâmetro
booleano do PHP REGISTER_GLOBAL seja configurado para OFF por
motivos de segurança (padrão nas versões mais recentes do PHP).
[3] Comentário enviado por tecdom em 01/02/2004 - 20:25h
Nao, mas farei o teste e postarei o resultado.
Obs: Gostaria de deixar claro para todos uma coisa que nao deixei no artigo, que a classe nao e minha. Apenas traduzi um artigo que encontrei na internet . O original encontra-se em: http://www.databasejournal.com/features/mysql/article.php/2222651.
Farei restante da traducao.
[7] Comentário enviado por fabio em 23/03/2004 - 17:10h
Bom, lá vai uma dica para o uso dessa classe. No PHP temos a função mysql_insert_id(), que retorna o código do último registro inserido no banco de dados. Precisei fazer isso usando a classe ADODB e descobri que ela possui suporte a esse recurso:
$sql = $db->execute("INSERT INTO table (column1, column2) VALUES ('value1', 'value2')");
if(!$sql){
echo "Error performing query: ".$db->ErrorMsg();
} else {
echo "Query success! The new row has an id of: ".$db->Insert_Id();
}
[8] Comentário enviado por rockedsonbr em 11/01/2005 - 14:50h
Boa tarde, cara gostaria de saber mais detalhes sobre a classe do AdoDB... pois aqui no teu artigo, vc diz q o adodb suporta conexão com o interbase. Eu baixei o adodb do souceforge, instalei e fiz um texte o resultado foi que ele não conseguiu achar a classe.
Missing file: c:\arquivos de programas\easyphp1-7\www\adodb/drivers/adodb-interbase.inc.php
ADONewConnection: Unable to load database driver ''