Aller au contenu

[RESOLU]odbc_close echoue [PHP-Access]


King Nothing

Messages recommandés

Bonjour,

Je développe une page PHP qui se ballade dans plusieurs dossier et se connecte aux basses Access qu'il rencontre pour récuperer quelques données.

J'utilise donc odbc mais j'ai un soucis avec la fonction odbc_close()

Elle ne fonctionne pas du tout, du coup à chaque tour de boucle odbc_connect() crée une nouvelle ressource et un bout d'un certain nombre Access dit STOP :

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop de tâches client., SQL state 08004 in SQLConnect

D'après les docs odbc_close() échoue si une transaction est encore en cours, pourtant autocommit est activé, par précaution j'ai ajouté des odbc_free_result() un peu partout mais ça ne change rien.

Pour avoir les idées plus clair j'ai fais ce script tout simple :

<?php				
$cnx = odbc_connect("testodbc", "root", "") or die ("Erreur du connect");
odbc_close($cnx) or die("Erreur du close");		
?>

Résultat : Erreur du close.

Je passe à coté de quelque chose mais je ne voi pas quoi.

Lien vers le commentaire
Partager sur d’autres sites

Je bosse avec easyphp sur serveur 2003, les bases access sont toutes situées en local sur le serveur.

Il n'a pas l'air d'avoir de configuration particulière, je lance mes scripts depuis un autre poste, tous le script PHP fonctionne juqu'a un certain nombre de bases.

En effet le script se connecte bien pour les 60 premières bases environ mais après il ne veut plus. Sachant qu'il y est des utilisateurs connecter ou non sur les bases ça fonctionne mais toujours avec cette limite.

De plus ce script existe en vba depuis une autre base acces et fonctione parfaitement, le hic c'est que office n'est pas installé sur le serveur 2003 mais seulement sur tous les autres postes d'utilisateurs. Ce qui oblige à utiliser cette base de consultation sur un autre poste et c'est très lent.

La solution php me parraissait parfaite jusqu'a que je tombe sur cette erreur.

Lien vers le commentaire
Partager sur d’autres sites

Merci.

J'avais déjà testé la fonction odbc_close_all() mais avec le die() et depuis je ne l'ai pas retester en pensant que cela ne venait plus du close(). La fonction odbc_close() ne fonctionne pas comme je le pensais, en tous cas close_all à l'air de bien fonctionner, j'ai ouvert 140 bases sans problèmes.

Pour conclure je ne sais pas à quoi sert odbc_close($cnx) mais odbc_close_all() est bien plus efficace.

RESOLU.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...