É necessário fechar conexões no mysqli ???

1,535 views
Skip to first unread message

rics

unread,
Jan 4, 2007, 1:56:19 PM1/4/07
to php-brasil
Gente,

Estou usando a extensão mysqli pela primeira vez. Eu nunca usei as
funções de fechar conexões com o banco porque ao final do script
elas eram fechadas automaticamente.

Enfim, é necessário usar $mysqli->close() ao final do script, mesmo a
conexão não sendo persistente??? Ou no final do script os objetos
todos são finalizados, as conexões fechadas e tudo o mais?

Pela lógica eu acho que não precisa usar o método close(), mas vai
saber né. Ainda estou engatinhando em OO e pode ser que meu
raciocínio esteja errado.

Grande abraço,
rics

José Wilker da S. Lima

unread,
Jan 4, 2007, 3:49:17 PM1/4/07
to php-b...@googlegroups.com
não, não há necessidade não, o fechamento é automatico! :) valeu
--
José Wilker (wilker)
Misgood Technologies
www.misgood.com
----------------------------------------------------------------
"Somos livres para escolher mas prisioneiro das consequencias".

Giovanni Donda

unread,
Jan 4, 2007, 5:18:38 PM1/4/07
to php-b...@googlegroups.com
é reciproco, depende da necessidade e da segurança que vc pensa em usar :

abrir a conn
acessar o banco e fazer o que precisa
fechar a conn

não que isso seja obrigatório como o wilker disse, fecha automatico.......mas isso depende do que vc for fazer......

poderia ser assim tbm

abrir a conn
acessar o banco
trava a tabela
altera as informações
destrava a tabela
fechar a conn
(assim evitaria que 2 pessoas ou mais alterasse o mesmo registro)

e etc............

vale ressaltar que se não fechar, até o fim do timeout ficará disponivel pois se vc usar qq comando que precisa dizer a qual conexão ele deve usar, claro que ele buscará a ultima conn aberta......sei lá....pelo que li no manual, é mais ou menos isso......

baixa o CHM do site, ajuda pra caramba.........

abraços
Giovanni Donda


dependendo de como vc utiliza e não fecha

José Wilker da S. Lima escreveu:

Flavinha

unread,
Jan 4, 2007, 7:52:29 PM1/4/07
to php-b...@googlegroups.com
Dicas muito boas as suas Giovanni.

rics

unread,
Jan 5, 2007, 7:23:56 AM1/5/07
to php-brasil
Então cara,

Eu colo naquela documentação lá 24h por dia! hehehe

Mas na documentação das classes eu não consegui achar nada que
tocasse no assunto. Por dedução imaginei que ao final da execução
do script a conexão seria fechada, caso fosse uma conexão normal né.
Conexões permanentes permanecem! hahahahaha (essa foi horrível)

Estou adorando usar mysqli. Muito mais rápido, mais fácil e mais
elegante!!!!

Valeu pelas dicas!

rics

On Jan 4, 7:18 pm, Giovanni Donda <giovannido...@gmail.com> wrote:
> é reciproco, depende da necessidade e da segurança que vc pensa em usar :
> abrir a conn
> acessar o banco e fazer o que precisa
> fechar a conn
> não que isso seja obrigatório como o wilker disse, fecha automatico.......mas isso depende do que vc for fazer......
> poderia ser assim tbm
> abrir a conn
> acessar o banco
> trava a tabela
> altera as informações
> destrava a tabela
> fechar a conn
> (assim evitaria que 2 pessoas ou mais alterasse o mesmo registro)
> e etc............
> vale ressaltar que se não fechar, até o fim do timeout ficará disponivel pois se vc usar qq comando que precisa dizer a qual conexão ele deve usar, claro que ele buscará a ultima conn aberta......sei lá....pelo que li no manual, é mais ou menos isso......
> baixa o CHM do site, ajuda pra caramba.........
> abraços
> Giovanni Donda
> dependendo de como vc utiliza e não fecha

Nick Marinho

unread,
Jan 5, 2007, 7:31:54 AM1/5/07
to php-b...@googlegroups.com
 Mais que MYSQL ?

2007/1/5, rics <ricard...@gmail.com>:
-~----------~----~----~----~------~----~------~--~-------~----~------~--~---
Minha alegria nunca se abala, estando triste ou feliz, por fora ou por dentro  !!! (Nick Marinho)

Entre no Grupo Raça Boxer - http://groups-beta.google.com/group/raca-boxer

Entre no Grupo EntraNet - http://groups-beta.google.com/group/entranet

Entre no Grupo Gentoo Maniacs - http://groups-beta.google.com/group/gentoo-maniacs

Visite meus sites - www.lucianomarinho.com.br - www.racaboxer.com.br

I'm Linux Registered User #433536
-~----------~----~----~----~------~----~------~--~-------~----~------~--~---

Tiago Gigli

unread,
Jan 5, 2007, 7:40:11 AM1/5/07
to php-b...@googlegroups.com
o mysqli eh o q tem no mysql, soh q usando as funcoes pelo php.
eu particularmente prefiro fazer td via sql...assim temos mais controle de codigo.

com relacao ao fechamento. é uma questao de performance.
eu geralmente faco a query no inicio do script, fecho a conexao e uso os dados depois de tratados, pq geralmente tenho q usar arrays mdim. isso, pq no meu caso, php eh praticamente a iface de relatorios.

outro problema eh a questao de limite de conexoes abertas. se vc tiver um server permitindo 100 conexoes simultaneas e mtas visitas, pode comecar a ver o mysql negando conexao (o que pode ser um problema mto grave).

vale a pena fechar qdo nao usar mais.

2007/1/5, Nick Marinho <nickm...@gmail.com>:



--
Tiago Gigli
MyGSM: SELECT CONCAT("(",CAST(SQRT(225) AS char(2)),") ", POWER(9,2), POWER(4,2), "-", 7, CEIL(7/2), FLOOR(7/2), 7)

Maicon Rafael

unread,
Jan 5, 2007, 9:30:50 AM1/5/07
to php-b...@googlegroups.com
saca soh
 
eu uso o banco mysql e faço minhas clausulas sql dentro do php
 
esse mysqli que vcs estão falando é o mysql?
 
mysqli = mysql  ?
 
outra coisa
 
como é esse lance de trava a tabela no mysql para ng alterar o mesmo registro?
 
mais uma coisa, eu faço um conn.php nos meus sites e sistemas e quando o cara entra na pagina ja faço um include dese conn.php e pronto.
 
tem algo errado nisso?
 
valew

 

Giovanni Donda

unread,
Jan 5, 2007, 10:47:01 AM1/5/07
to php-b...@googlegroups.com

6.7.5. Sintaxe LOCK TABLES e UNLOCK TABLES

LOCK TABLES nome_tabela [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
            [, nome_tabela [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} ...]
...
UNLOCK TABLES

LOCK TABLES funciona da seguinte maneira:

  1. Ordene todas as tabelas a serem travadas em uma ordem definida internamente (do ponto do usuário a ordem é indefinida).

  2. Se uma tabela é bloqueada com uma trava de leitura e de escrita, coloque a trava de escrita antes da trava de leitura.

  3. Bloqueie uma tabela por vez até que a thread obtenha todas as travas.

Esta política assegura que as tabelas sejam bloqueadas sem deadlock. Há no entanto outra coisa da qual é preciso estar ciente neste esquema:

Se cocê estiver usando uma trava de escita LOW_PRIORITY WRITE em uma tabela, significa apenas que o MySQL irá esperar por esta trava particular até que não haja mais treads fazendo um bloqueio de leitura (READ). Quando a thread tiver obtido a trava de escrita (WRITE) e está esperando ppo obter o trava para a próxima tabela na lista de tabelas bloqueadas, todas as outras threads irão esperar que a trva de escrita (WRITE) seja liberada. Se isto tornar um sério problema com sua aplicação, você deve converter algumas de suas tabellas para tabelas com segurança em transações.

acima ai é o que está no manual..........e tem mais coisas para ler a respeito..........

mas cuidado para não ferrar sua aplicação.........
estuda isso direitinho para ver se atende sua necessidade.........

eu tenho minhas classes php fora do diretorio public_html........

e em todas as paginas eu chamo o "init.include" que faz um monte de coisas para mim, inclusive abrir uma conn que apesar de não ser permanente eu não me preocupo em fechar.....por que sei dos riscos que corro e monitoro isso.....

se a pagina conn.php ficar no public_html ou na www, com "SQL injection" ou alguns comando do PHP é possivel ler seu arquivo e saber como vc acessa o banco de dados e ai......vc corre 100% de chances de perder tudo.......claro que isso depende de como vc usa o conn.php .....mas pensa nisso, coloca isso fora da public_html, vai ajudar.....

abraços,
Giovanni




Maicon Rafael escreveu:

rics

unread,
Jan 5, 2007, 10:00:36 AM1/5/07
to php-brasil
Não cara, mysqli não é igual mysql.

mysql é o servidor de banco de dados.

mysqli é uma extensão do php que fornece uma interface OO (classes)
para trabalhar com o banco mysql.

Todo mundo usa a extensão mysql do PHP, que é o padrão normalmente.
mysqli quer dizer MySQL Improved.

você não tem a função: mysql_query(), mysql_fetch_array() e tudo o
mais?

No mysqli você também tem uma série de classes pra trabalhar...

Por exemplo, vc cria um objeto para a conexão. Esse objeto tem um
monte de métodos pra você usar, como por exemplo, o método
$mysqli->query(). E por aí vai...

Aconselho a todos dar uma estudada com carinho no mysqli do php... vale
muito a pena mesmo.

Grande abraço,
rics

Maicon Rafael

unread,
Jan 5, 2007, 10:26:03 AM1/5/07
to php-b...@googlegroups.com
UM, eu ja usei a ADODB uma vez que é para abstração do banco de dados, muito boa tb. vou ver essa mysli
 
Giovani, muito obrigado pela explicação.
 
eu consigo acessar um arquivo semp roblemas para fora do meu public_html? nem sabia.
 
digamos que eu esteja na raiz public_html/conn.php
 
vc diz para faezr meus includes ../conn.php.
 
muito bom isso

 
Maicon Rafael
www.mrpereira.com

Maicon Rafael

unread,
Jan 5, 2007, 10:33:03 AM1/5/07
to php-b...@googlegroups.com
Meu conn.php que chamo em todas as paginas é a seguinte:
 

<?
$servidor = '127.0.0.1';

$usuario1 = 'root';
$senha1 = '';
$banco = 'site';


$conexao = mysql_connect($servidor,$usuario1,$senha1)or die("erro conexão");
mysql_select_db($banco,$conexao);

?>



 
--
Maicon Rafael
www.mrpereira.com



--
Maicon Rafael
www.mrpereira.com

Giovanni Donda

unread,
Jan 5, 2007, 11:36:31 AM1/5/07
to php-b...@googlegroups.com
vamos supor que vc tenha

public_html
    >> index.php
include
   >> conn.php (ou qq extensão que vc quiser eu uso init.include)

se vc inserir/chamar via include no index.php

include "../include/conn.php" deve funcionar

se não

vc precisa usar a função

 // Funciona a partir do  PHP 4.3.0
set_include_path('/include');

ai qq include  que vc, o php vai buscar nesta pasta.........tem outra função que volta para o valor padrão.........tome cuidado se vc usa PEAR.......

dá uma olhada no manual para usar corretamente

Att,
Giovanni


Maicon Rafael escreveu:

Giovanni Donda

unread,
Jan 5, 2007, 11:58:55 AM1/5/07
to php-b...@googlegroups.com
certo..........

eu me referi quando vc inclui isso nas paginas que vc precisa de conexão com banco de dados........

seria mais ou menos assim:

<?php

  include("../include/init.include");

 aqui vc usa os comandos para SQL...........

?>

entendeu ?

att,
Giovanni




Maicon Rafael escreveu:

José Wilker da S. Lima

unread,
Jan 5, 2007, 11:31:26 AM1/5/07
to php-b...@googlegroups.com
cara, que loucura! :) um debate bem interessante, gostei das explicações do Giovani e acho bem interessante.

mas não acredito que iria melhorar a performance de um sistema, quanto o fechamento de conexões simultaneas. até por que, por uma questão de organização e segurança da informação, devemos ter ambientes de desenvolvimento e ambientes aonde as coisas realmente estão sendo visualizadas pelos usuarios, geralmente na iface dos usuarios o user que acessa o banco ele tem inumeras restrições e ele é o que determina o que cada coisa é feita.

eu geralmente não utilizo o fechamento das conexões do banco, mas aconselho a organização do seu código e se houver necessidade feche. mas se não houver, não há ter duplicidade de chaves id com auto incremento, se ela for montada para não ter duplicidade.

entenderam?

sobre a mysqli, para quem não sabe é soh uma classe para tratar as coisas do mysql, no meu caso eu não a utilizo, pois o meu framework ele ja me fornece classes para mysql e postgre. então eu geralmente monto as minhas classes. uso as funções principais do php e do mysql.

conselho de amigo: não utilizem classes prontas, que vem nesses conjuntos de pacotes de desenvolvimento, pois quando voce tem um servidor do seu lado, tudo está tranquilo, agora quando ele esta fora do país e você não pode modifica-lo a coisa começa ficar preta.

então é só criar uma metodologia de desenvolvimento, e começar a criar as coisas multifuncionais! sacas?

bom é isso dae,

Valeu Geovani, uma explanação muito boa sobre mysqli! :) valeu mano

Falow Galera,

José Wilker
Misgood Technologies

Nick Marinho

unread,
Jan 5, 2007, 11:42:34 AM1/5/07
to php-b...@googlegroups.com
 E ai MR. Missgood ?

 Eu to aqui só acompanhando !!!

 Muito bom assunto.

 Me diz uma coisa, e aquele projeto que estavam discutindo ?
 Nada ?

2007/1/5, José Wilker da S. Lima < uisk...@gmail.com>:



--

Maicon Rafael

unread,
Jan 5, 2007, 11:49:51 AM1/5/07
to php-b...@googlegroups.com
show de bola

José Wilker da S. Lima

unread,
Jan 5, 2007, 12:46:14 PM1/5/07
to php-b...@googlegroups.com
nick, ainda estou observando algumas coisas, relacionadas a imagine cup, só que agora estou um tanto mais um tantão atarefado, preciso aprender a programar em C. então to me ferrando de estudar!!! :(

alias, não é só C não, tenho que aprender muitas coisas! :( então eu acho que eu vo continuar lendo meus livros, no começo de fevereiro eu começo a fazer o projeto! e contatar a galera que eu acredito que pode ser da equipe.

valeu,

assim sabe conselho: comprem livros. não há conhecimento sem um bom livro! :D

valeu,

José Wilker
Misgood Technologies

Giovanni Donda

unread,
Jan 5, 2007, 2:00:39 PM1/5/07
to php-b...@googlegroups.com
wilker........

tenho o livro C a biblia em PDF mas tem 400 mb............rs em portugues.........
depois agente fala pelo MSN a respeito......rsrsrs eu te mando o LINK do emule.......

abraços
Giovanni


José Wilker da S. Lima escreveu:

Eliane

unread,
Jan 5, 2007, 1:03:03 PM1/5/07
to php-b...@googlegroups.com
eu tenho o C total e completo em PDF mas não é tão pesado assim!!!!

2007/1/5, Giovanni Donda <giovan...@gmail.com>:

Tiago Gigli

unread,
Jan 5, 2007, 1:23:09 PM1/5/07
to php-b...@googlegroups.com
ae jw..
discordo de vc cara.. apesar de gostar de ler livros de vez em qdo..

livros podem fazer a gente não pensar

Nick Marinho

unread,
Jan 5, 2007, 1:31:40 PM1/5/07
to php-b...@googlegroups.com
 Disponibilizem esse pdf no www.4shared.com
 Será ótimo para todos.

 :D

2007/1/5, Eliane <peq...@gmail.com >:
>  www.misgood....

[Mensagem cortada]  

José Wilker da S. Lima

unread,
Jan 5, 2007, 1:32:43 PM1/5/07
to php-b...@googlegroups.com
rapaz, pior q eu vou ser sincero com voce, eu até discordo um pouco de min mesmo...

e venho a informar que... internet faz agente tmb não pensar, e a porcar... do

GOOGLE É PREJUDICIAL A SAÚDE, E CAUSA DEPENDENCIA.

to passando por um problema igual no trabalho, aqui não acessa mais o google por algum motivo, que nao sei qual é ! e cara. é dificil.
queria saber algum outro sistema de busca interessante, por que sempre que bate a dúvida o google ajudava.

e agora ? quem ajuda ? UEAuheauhea ninguem, então eu racho a cuca raciocinando aqui.

livro é bom para conhecimento, agora não pode se apegar neles a tudo! :) e outra... tentem utilizar menos o Google. como eu disse acima:

Ministério da Sáude Adverte: Google é prejudicial a Saúde e causa dependencia.

hueuhehau

hehe valeu

José Wilker
Misgood Technologies

Giovanni Donda

unread,
Jan 5, 2007, 3:19:20 PM1/5/07
to php-b...@googlegroups.com
mas esse 4shared é pago ??

Nick Marinho

unread,
Jan 5, 2007, 2:23:07 PM1/5/07
to php-b...@googlegroups.com
 Não, e é muito melhor que o Rapidshare.

 Encontra-se muita coisa em mp3 la que no rapidshare vc nem sonha que possa existir, simplesmente por nao poder fazer uma busca la sem ter que pagar.

 Se quiser eu ficarei online a noite toda hoje resolvendo umas coisas nos meus sites, posso te passar links muito bons !

 Ai aproveita e me passa esse pdf, case vc nao consiga subir ele eu faço !

2007/1/5, Giovanni Donda <giovan...@gmail.com>:

mas esse 4shared pago ??

Giovanni Donda

unread,
Jan 5, 2007, 3:39:43 PM1/5/07
to php-b...@googlegroups.com
me add depois no MSN
sam...@hotmail.com
pode ser..........

Giovanni Donda

Nick Marinho escreveu:
 N o, e muito melhor que o Rapidshare.


 Encontra-se muita coisa em mp3 la que no rapidshare vc nem sonha que possa existir, simplesmente por nao poder fazer uma busca la sem ter que pagar.

 Se quiser eu ficarei online a noite toda hoje resolvendo umas coisas nos meus sites, posso te passar links muito bons !

 Ai aproveita e me passa esse pdf, case vc nao consiga subir ele eu fa o !

2007/1/5, Giovanni Donda <giovan...@gmail.com>:

mas esse 4shared pago ??

-~----------~----~----~----~------~----~------~--~-------~----~------~--~---
Minha alegria nunca se abala, estando triste ou feliz, por fora ou por dentro  !!! (Nick Marinho)



Entre no Grupo EntraNet - http://groups-beta.google.com/group/entranet

Entre no Grupo Gentoo Maniacs - http://groups-beta.google.com/group/gentoo-maniacs

Visite meus sites - www.lucianomarinho.com.br - www.racaboxer.com.br

I'm Linux Registered User #433536
-~----------~----~----~----~------~----~------~--~-------~----~------~--~---
Minha alegria nunca se abala, estando triste ou feliz, por fora ou por dentro  !!! (Nick Marinho)

Nick Marinho

unread,
Jan 5, 2007, 5:27:51 PM1/5/07
to php-b...@googlegroups.com
 Adicionado

 
2007/1/5, Giovanni Donda <giovan...@gmail.com>:
--
-~----------~----~----~----~------~----~------~--~-------~----~------~--~---
Minha alegria nunca se abala, estando triste ou feliz, por fora ou por dentro  !!! (Nick Marinho)

Entre no Grupo Raça Boxer - http://groups-beta.google.com/group/raca-boxer

Giovanni Donda

unread,
Jan 5, 2007, 6:42:48 PM1/5/07
to php-b...@googlegroups.com
valeu........
chegando em casa agente se fala.........




Nick Marinho escreveu:

Rafael Kassner

unread,
Jan 5, 2007, 6:12:50 PM1/5/07
to php-b...@googlegroups.com
google é bom, pode resolver nossos problemas com uma simples pesquisa...

ler livros? neh.... o último que eu li foi Chapeuzinho vermelho pra minha prima, haha

quanto ao MySQLI, acredito que é uma boa em termos de OO... agora quem não tá acostumado, é legal ir aprendendo pra ver como funciona a OO...

quanto ao usar classes prontas, nem fala.... prefiro pegar uma classe prontoa pra pegar a base, e reeescrever do meu jeito.. é bem melhor...

flw

...

[Mensagem cortada]  

Nick Marinho

unread,
Jan 5, 2007, 6:30:15 PM1/5/07
to php-b...@googlegroups.com
 Com certeza reescrever a classe depois de entender o que ela faz e suas funcoes é bem melhor.
 Alem de aprender mais vc a escreve ao seu modo !!!
Reply all
Reply to author
Forward
0 new messages