Jump to content


Photo

Otimização De Banco De Dados


  • Faça o login para participar
3 replies to this topic

#1 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 26/09/2006, 15:15

Ok, eu tenho algumas dúvidas sobre otimização de banco de dados.
Depois de fazer uma pesquisa, ler artigos, dicas, recomendações; colecionar alguns códigos úteis, estou vendo quais soluções viáveis.
Então:

1. Qual a melhor forma (e mais rápida) de exibir um código HTML dentro de um script PHP?
a) Fechando e abrindo as seções <?php CÓDIGO PHP ?> CÓDIGO HTML <?php echo $variavel; ?> MAIS CÓDIGO HTML <?php CÓDIGO PHP ?>
B) Echo com aspas simples ou aspas duplas?
c) Outro?

2. Conectar-se ao banco de dados através do persistent connection:
mysql_pconnect(“host”, “login”, “passwd”);
realmente otimiza o tempo de conexão quando você tem várias páginas (topo, conteudo e rodape) que se conectam ao banco de dados diversas vezes numa mesma página?

3. A utilização de 'classes' prontas que executam querys (select, insert, update, delete) no banco de dados é mais efetiva e segura que executar as querys manualmente e se forem feitas manualmente qual a melhor forma?
MANUALMENTE 1 : $query = mysql_query("SELECT ...");
MANUALMENTE 2 : $query = "SELECT ...";
$resultado = mysql_query($query);

4. Como evitar que as pessoas recebam erros de conexão ao MYSQL? ex: Too many connections...
Error handlers comuns para querys podem ser utilizados neste contexto também?

5. Qual a melhor forma de proteger o arquivo de conexão ao banco de dados, quando este tem extensão PHP e é incluído em todas as páginas que necessitam da conexão?

6. Qual a melhor forma de incluir arquivos de conexão? Através do include ou require_once?

7. Salvando os resultados de uma query em cache por um tempo determinado (digamos, 24horas), privilegiaria este arquivo "cacheado" dentro destas 24horas, mesmo se os dados desta query estiverem sido atualizados?
O código que pretendo usar é este:

$expire = 86400; // 24 hours
if (file_exists($file) &&
	filemtime($file) > (time() - $expire)) {
	$records = unserialize(file_get_contents($file));
} else {
	$link = mysql_connect('localhost','username','password')
		or die (mysql_error());
	mysql_select_db('shop')
		or die (mysql_error());
	/* form SQL query */
	$query = "SELECT * FROM categories";
	$result = mysql_query($query)
		or die (mysql_error());
	while ($record = mysql_fetch_array($result) ) {
		$records[] = $record;
	}
	$OUTPUT = serialize($records);
	$fp = fopen($file,"w");
	fputs($fp, $OUTPUT);
	fclose($fp);
} // end else

// Query results are in $records array
foreach ($records as $id=>$row) {
	if ($row['category_id'] == $_REQUEST['category_id']) {
		// category selected - print bold
		print '<B>'.$row['category_name'].'</B><BR>';
	} else {
		// other category - print regular
		print $row['category_name'].'<br>';
	}
} // end foreach

Obrigada desde já. :)

#2 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 27/09/2006, 12:56

4. Como evitar que as pessoas recebam erros de conexão ao MYSQL? ex: Too many connections...
Error handlers comuns para querys podem ser utilizados neste contexto também?
Uma sugestão, é usar o @.
Dai ninguém recebe os erros.
Ou então, verificar se deu erro(se é que dá pra fazer isso), e se for, exibir outro erro ao invés desse.

5. Qual a melhor forma de proteger o arquivo de conexão ao banco de dados, quando este tem extensão PHP e é incluído em todas as páginas que necessitam da conexão?
CHMOD.
Não dê 777.
Eu sugiro dar apenas "Read", ou seja, 444.
Tente dar 440.
Senão, 555 ou 551 ou 550.
Eu não sei se vai funcionar, mas tente aí.

//Quanto a salvar dados em cache, sugiro tentar, mas, não acho que vale a pena, uma vez que, se for adicionado novos recursos, como tutoriais e etc por exemplo, somente irão aparecer 24 horas depois, ou se atualizar o cache antes.

Edição feita por: Inu, 27/09/2006, 12:57.


#3 MagicalTrevor

MagicalTrevor

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 27/09/2006, 14:44

1) a. acho que se fikar abrindo e fechando muito as tags php talvez fike um pouko mais lerdo
b. creio que nao influencia em nada na velocidade de execução

2) mysql_pconnect nao irá fechar a conexao com o banco de dados no fim de execucao do script, ele continuará aberto, e se jah existe uma conexao aberta ele nao abrirá outra, sendo assim ele soh abre uma vez a conexao, nao fika abrindo e fechando.

6) require() e include() têm a mesma função, exceto pela manipulação de erros. include() produzira um Warning e require() produzirá um Fatal Error. Ai fika na sua escolha, entre qual dos dois prefere.

Edição feita por: MagicalTrevor, 27/09/2006, 14:45.


#4 Rodrigo

Rodrigo

    oi!

  • Usuários
  • 995 posts
  • Sexo:Não informado
  • Interesses:Diretório de sites - http://www.acheinobrasil.com.br

Posted 27/09/2006, 15:53

...
Ou então, verificar se deu erro(se é que dá pra fazer isso), e se for, exibir outro erro ao invés desse.
...



seria o ' or die ("Erro ao se conectar !"); '




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq