[Résolu] Test d'intégration de données dans ma base de données

Vous avez un soucis de développement et ce n'est pas du ressort de notre support ? N'hésitez pas à soumettre vos petits soucis de développement et à vous entre aider par la même occasion.
Philippe40
Messages : 32
Inscription : 21 octobre 2012 à 18:54

Bonjour,
J'ai une nouvelle aide à vous demander :
Dans une table de ma base de données, j'ai inséré des lignes.

Dans mon programme c# j'envoie des requêtes de la forme :
http://mon site/testexistligne.php?id=34555555 (par exemple)
pour vérifier si la base de données contient cette référence.

mon fichier testexistligne.php contient ceci :

$host='serveur';
$user='user';
$pass='mdp';
$base=basebdd_db3';
\t
$dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass);\t\t
$query = $dbh->query('SELECT EXISTS (SELECT * FROM wp3_articles WHERE
code_article='.$_GET['id'].') AS membre_exists');

if($query->fetchColumn() != 0)\t{echo "true";}\telse \t {echo "false"; }
\t
\t$dbh = null;

Le programme C# boucle sur une liste d'une centaine de clé pour vérifier si la référence existe dans la base de données, envoie la requête et obtient la réponse vrai ou faux.
Cela fonctionne pour les premières lignes. ensuite, le serveur m'envoie une erreur TIME OUT .

Après chaque requête je réinitialise pourtant ma connexion.

Avez-vous une solution pour ce problème

Merci d'avance
Cordialement
Philippe
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7937
Inscription : 2 avril 2010 à 20:14

Bonjour,

En cherchant en aveugle sur vos différents sites et en pensant avoir trouvé le script "testexistligne.php" sous un autre nom, je ne vois que 9 requêtes Web hier entre 21:42 et 21:54 sans aucun refus de la part de mes services et pour ce peu de requêtes je ne comprends pas d'où pourrai provenir ce "timeout".

Par contre vous pourriez écrire votre SELECT autrement sans avoir à utiliser de sous requête imbriquée et éviter le * si c'est uniquement pour compter le nombre de retours, en utilisant un prepare PDO afin d'éviter une injection SQL :

Code : Tout sélectionner

SELECT COUNT(code_article) FROM wp3_articles WHERE code_article = :id;
Ça vous permettrait d'éviter de parcourir plusieurs lignes par la suite.

Je viens de regarder à l'instant le service Web et je ne vois aucun LOCK ni WAIT sur vos bases SQL.

Est-ce que le problème est toujours présent ?
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Philippe40
Messages : 32
Inscription : 21 octobre 2012 à 18:54

Merci pour votre réponse.

Le fait que vous ne voyez pas mes scripts est à cause du fait que je teste sur mon environnement de test en local pour voir les log erreurs. c'est beaucoup + facile pour moi.

testexistligne.php est une invention. Le fichier PHP est en réalité testachats.php (mal nommé car il s'agit en fait du fichier articles que je teste).

Je vais essayer votre idée.
Je vous dis si ça marche

Cordialement
Philippe
Philippe40
Messages : 32
Inscription : 21 octobre 2012 à 18:54

Bonjour,
J'ai suivi vos conseils et utilisé la requête que vous m'avez conseillé.
Le fait d'utiliser une requête préparée semble mieux fonctionner
Merci
Cordialement
Philippe
Répondre