Discussion:
liberer la memoire apres un inse rt ou update ?
(trop ancien pour répondre)
Jean-Francois Ortolo
2007-09-03 16:14:32 UTC
Permalink
Bonjour

Je fais des update et des insert:

unset($res);
$res = @mysql_query("INSERT ou UPDATE ...");
if(!$res) {
echo "message d'erreur\n";
exit;
}

Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT, libérer
la mémoire en faisant un: mysql_free_result($res) après les mysql_query( )

Merci beaucoup de vos réponses.

Bien à vous.

Amicalement.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
Mickael Wolff
2007-09-04 10:08:37 UTC
Permalink
Post by Jean-Francois Ortolo
unset($res);
if(!$res) {
echo "message d'erreur\n";
exit;
}
Pourquoi libères-tu avant ?
Si tu fais un exit ici, fais un die, c'est équivalent à echo + exit.
Post by Jean-Francois Ortolo
Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT, libérer
la mémoire en faisant un: mysql_free_result($res) après les mysql_query( )
Oui, mais après avoir exploité les résultats, hein ;)
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Jean-Francois Ortolo
2007-09-04 12:51:31 UTC
Permalink
Post by Mickael Wolff
Post by Jean-Francois Ortolo
unset($res);
if(!$res) {
echo "message d'erreur\n";
exit;
}
Pourquoi libères-tu avant ?
Si tu fais un exit ici, fais un die, c'est équivalent à echo + exit.
Je ne libère pas la mémoire avant.

Je me contente de faire en sorte que la variable $res ne soit pas
définie avant le mysql_query( ), par habitude de maniaque de la propreté
du code.

Quant à exit au lieu de die, la seule différence est le message
paramètre de die, moi j'envoie ce message avant avec echo. Toujours le
codeur maniaque.
Post by Mickael Wolff
Post by Jean-Francois Ortolo
Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT, libérer
la mémoire en faisant un: mysql_free_result($res) après les mysql_query( )
Oui, mais après avoir exploité les résultats, hein ;)
Merci beaucoup.

Je croyais, que mysql_free_result, ne concernait que les
mysql_query() d'instructions SQL SELECT, qui alimentent la mémoire,
parfois de façon conséquente. Encore que réellement, c'est plutôt les
fonctions mysql_fetch... et apparentées qui occupent la mémoire, mais bon...

Donc, je vais pouvoir nettoyer la mémoire systématiquement, après
des INSERT ou des UPDATE. Chouette, j'ai la conscience tranquille,
maintenant.

Merci beaucoup pour votre réponse.

Bien à vous.

Amicalement.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
Alves Michael
2007-09-04 13:19:24 UTC
Permalink
Post by Mickael Wolff
Post by Jean-Francois Ortolo
Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT, libérer
la mémoire en faisant un: mysql_free_result($res) après les mysql_query( )
Oui, mais après avoir exploité les résultats, hein ;)
Il n'y a pas grand chose à exploiter après un INSERT ou un UPDATE. La
doc PHP indique que mis à part les requêtes de types SELECT, SHOW,
DESCRIBE, EXPLAIN le mysql_free_result n'est pas nécéssaire.
Mickael Wolff
2007-09-05 06:58:16 UTC
Permalink
Post by Alves Michael
Il n'y a pas grand chose à exploiter après un INSERT ou un UPDATE. La
doc PHP indique que mis à part les requêtes de types SELECT, SHOW,
DESCRIBE, EXPLAIN le mysql_free_result n'est pas nécéssaire.
Si j'étais de mauvaise fois, je m'en sortirais avec une pirouette en
disant que c'était exactement ce que je voulais dire par « exploitation
du résultat » ;) Mais effectivement, je libérais true ou false de mes
mysql_query systématiquement. Ce qui est donc une erreur.

Merci de la correction !
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Alves Michael
2007-09-04 11:49:45 UTC
Permalink
Post by Jean-Francois Ortolo
Bonjour
unset($res);
if(!$res) {
echo "message d'erreur\n";
exit;
}
Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT, libérer
la mémoire en faisant un: mysql_free_result($res) après les mysql_query( )
Tu ne dois utiliser mysql_free_result() que pour libérer les ressources
créées à partir des requêtes de types SELECT, SHOW, DESCRIBE, EXPLAIN.
Jean-Francois Ortolo
2007-09-04 20:34:28 UTC
Permalink
Post by Alves Michael
Post by Jean-Francois Ortolo
Bonjour
unset($res);
if(!$res) {
echo "message d'erreur\n";
exit;
}
Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT,
libérer la mémoire en faisant un: mysql_free_result($res) après les
mysql_query( )
Tu ne dois utiliser mysql_free_result() que pour libérer les ressources
créées à partir des requêtes de types SELECT, SHOW, DESCRIBE, EXPLAIN.
Bonjour Monsieur

Merci beaucoup pour votre réponse.

Bien à vous.

Amicalement.

Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
John GALLET
2007-09-05 07:56:12 UTC
Permalink
Bonjour,
Post by Jean-Francois Ortolo
Je voudrais savoir s'il faut aussi pour les UPDATE et INSERT, libérer
la mémoire en faisant un: mysql_free_result($res) après les mysql_query( )
Non ça n'a pas de sens. (Re)lire plus particulièrement le point 9.4 du
cours que je diffuse sur http://www.saphirtech.com/cours_php.html

(Ducros, décarcasse, toussa ;-)...)

C'est aussi pour cette raison que mysql_num_rows() accepte en argument un
buffer de résultats renvoyé par mysql_query() et que mysql_affected_rows()
accepte en argument le handler de connexion.

a++;
JG

Loading...