WoOo Posted December 22, 2009 at 12:28 PM Report Share #301810 Posted December 22, 2009 at 12:28 PM Viva, Andava aqui a rever algum código antigo de uma aplicação que desenvolvi há algum tempo atás e decidi "limpar um pouco as coisas". Lembrei-me então de criar duas funções, uma para abrir a ligação à bd e outra para fechar, isto para não tar sempre a repetir o código ao longo do projecto e ao mesmo tempo evitar que algumas ligações ficassem abertas como acontecia por vezes. Acontece que antes de abrir este tópico decidi fazer uma pesquisa e vi que algumas pessoas dizem ser mau abrir uma ligação por cada query, outras usam sem qualquer problema, portanto gostava de ouvir algumas opiniões. Fica aqui um pequeno exemplo de como pensei organizar o meu código nesta situação: page.php <?php include ('include/functions.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> ... <?php ... if (!isset($varX)) setValue2(); ... ?> ... functions.php <?php function dbConnect() { @$con = mysql_connect('db_host','db_user','db_pass'); if(mysql_select_db('db_name')) { return true; } else { return false; } } function dbClose() { mysql_close(); } function setValue1() { if(dbConnect()) { ... dbClose(); } } function setValue2() { if(dbConnect()) { ... dbClose(); } } function setValue3() { if(dbConnect()) { ... dbClose(); } } ?> Link to comment Share on other sites More sharing options...
scorch Posted December 22, 2009 at 12:41 PM Report Share #301812 Posted December 22, 2009 at 12:41 PM Eu, em todos os processos que faço, abro uma ligação no inicio da página e fecho-a no fim da página. Na minha opinião, é gastar recursos estar sempre a abrir e fechar a conexão. PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
WoOo Posted December 22, 2009 at 12:53 PM Author Report Share #301814 Posted December 22, 2009 at 12:53 PM Sim, recentemente tenho sido mais adepto dessa prática. Neste caso como quero as funções à parte, posso sempre fazer algo como: <?php include ('include/functions.php'); dbConnect(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> ... <?php ... if (!isset($varX)) setValue2(); ... ?> ... </html> <?php dbClose(); ?> Evito estar sempre a abrir/fechar conforme o número de queries. Link to comment Share on other sites More sharing options...
softklin Posted December 22, 2009 at 01:51 PM Report Share #301818 Posted December 22, 2009 at 01:51 PM Penso que não é preciso fechar a ligação quando usam o mysql_connect, pois ele faz isso no fim da execução do script, ou a pedido, usando a função mysql_close(). Note: The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling mysql_close(). Se o interesse for manter a ligação aberta e fechar apenas quando explicitamente necessário, podem usar a função mysql_pconnect. Quanto ao usar uma só ligação para várias consultas, acho o mais correcto. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
WoOo Posted December 22, 2009 at 02:01 PM Author Report Share #301819 Posted December 22, 2009 at 02:01 PM Sim, ele fecha no final do script, é mais por uma questão de hábito. O mysql_pconnect() por acaso nunca usei, faz-me confusão deixar a ligação aberta quando sei que não irei precisar dela! Link to comment Share on other sites More sharing options...
Icepick.pt Posted December 23, 2009 at 12:18 AM Report Share #301961 Posted December 23, 2009 at 12:18 AM Alinho na opinião do resto da turma, nunca me dei mal a abrir uma ligação só. Contudo, uso duas ligações: - Uma só para leitura, que é a que é usada em 90% das vezes - Uma para leitura e escrita, que só chamo quando tenho que escrever na bd. No caso da ligação persistente, nem vejo qual é vantagem. Alguém me explica ? Quanto a fechar a ligação, nunca uso o fecho. Acabando o script, as ligações são automáticamente fechadas. Também nunca me dei mal assim. Link to comment Share on other sites More sharing options...
Triton Posted December 23, 2009 at 12:23 AM Report Share #301962 Posted December 23, 2009 at 12:23 AM Deves fazer apenas uma ligação à base de dados. Quando escreves para um ficheiro, também não abres e fechas o ficheiro a cada escrita ou leitura. No caso da ligação persistente, nem vejo qual é vantagem. Alguém me explica ? Quanto a fechar a ligação, nunca uso o fecho. A vantagem é que não tens de estar a negociar uma nova ligação e a efectuar a autenticação com a base de dados a cada query. Duvido que isso funcione decentemente para um site com uma grande carga. Quanto ao fechar, deves fechar. É uma linha de código e convém ser sempre explicito e fazer as coisas como deve ser. Só porque hoje o PHP fecha todas as ligações, isso não garante que na próxima versão isso também aconteça. E também porque estás a criar maus hábitos como programador... <3 life Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now