Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2010, 13h00   #1
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
Par défaut lenteur avec ldap_search()

Bonjour,

J'utilise ce code pour lire sur un serveur ldap :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
function ldap_extract($dn,$filtre)
{
	$server = "mon serveur";
	$port = 389;
	$ds=ldap_connect($server,$port);
	$r=ldap_bind($ds,"","");
	$sr=ldap_search($ds, $dn, $filtre);
        $info = ldap_get_entries($ds, $sr);
 
return $info;
}
 
$tab=ldap_extract("mes critères...","(mineqTypeEntree=BALI)");
Cela fonctionne : j'obtiens un tableau d'environ 300 entrées (que je peux ensuite afficher). Le problème c'est mon navigateur continue de réfléchir pendant presque 1 minute (alors que je suis déconnecté du serveur et qu'il a affiché mon résultat).Je n'ai pas la moindre idée de ce qu'il fait. Cette lenteur semble provenir de ldap_search(). Lorsque je test la même requête avec ldap browser j'ai le résultat direct...

Si quelqu'un peut m'expliquer....
Que puis je modifier ? Faut-il ajouter des critères à la fonction ldap_search()?
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h12   #2
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Bonjour,

peut être peux tu affiner ta recherche en fonction de ton ds.

dans les filtres de recherches, tu peux éventuellement cibler sur les objets
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h28   #3
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
J'ai ajouté :
Code :
1
2
3
 
$restriction=array("sn", "mail");
$sr=ldap_search($ds, $dn, $filtre, $restriction);
cela ne résout pas mon problème : j'obtiens directement ce que je souhaite, je l'affiche, je ferme la connexion mais mon navigateur continue de charger ...(quoi en se demande ) pendant 1 minute puis il coupe....
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h33   #4
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
t'as essayé de faire un ldap_close() derrière ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h41   #5
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
oui ... mais cela continue quand même de mouliner (même si je n'ajoute aucune instruction après) ... Je comprends vraiment pas ...
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h42   #6
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
tu as quoi comme code autour ?

une boucle ?

tu peux nous montrer l'ensemble de ton code ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h54   #7
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
Voilà l'ensemble du code ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
function ldap_extract($dn,$filtre)
{
	$server = "ldap.melanie2.i2";
	$port = 389;
	$ds=ldap_connect($server,$port);
	$r=ldap_bind($ds,"","");
 
	$restriction=array("sn","givenname", "mail", "departmentnumber","description");
 
	$sr=ldap_search($ds, $dn, $filtre, $restriction);
	$info = ldap_get_entries($ds, $sr);
 
	echo "Le nombre d'entrées retourné est de ".ldap_count_entries($ds,$sr)."<br>";
 
ldap_close ($ds);
 
For($i=0;$i<sizeof($info);$i++)
{
echo $info[$i]["sn"][0]." ".$info[$i]["givenname"][0]." ".$info[$i]["mail"][0]." ".$info[$i]["departmentnumber"][0]." ".$info[$i]["description"][0]."<br>";
}
}
 
ldap_extract("ou=DREAL Alsace,ou=DR,ou=melanie,ou=organisation,dc=equipement,dc=gouv,dc=fr","(mineqTypeEntree=BALI)");
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 13h58   #8
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
si tu fais ça tu dois pouvoir récupérer toutes tes données

est ce que ça tourne aussi longtemps ?

Code php :
1
2
3
4
5
6
7
8
9
 
 
$info = ldap_get_entries($ds, $sr);
 
echo '<pre>';
print_r($info);
echo '</pre>';
 
exit;
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h12   #9
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
C'est toujours le même souci : cela affiche rapidement les 289 entrées puis cela rame dans le vide...
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h17   #10
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
et ça, ça te donne quoi ?

Code php :
1
2
3
4
5
 
$start = microtime(TRUE);
$sr=ldap_search($ds, $dn, $filtre, $restriction);
$end = $microtime(TRUE);
echo "Le script s'est exécuté en ".($end - $start)." micro secondes.";
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h26   #11
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
le script s'est exécuté en 0.44185090065 micro seconde
C'est donc rapide ...
j'ai testé avec ta méthode ldap_get_entries() réponse :
Le script s'est exécuté en 0.00648808479309 micro secondes
pas de soucis non plus

Après je n'ai plus rien (sauf ldap_close) car j'ai enlevé la boucle d'affichage.

moi ca me dépasse....
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h30   #12
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
Code php :
1
2
3
4
5
6
7
8
 
$start = microtime(TRUE);
For($i=0;$i<sizeof($info);$i++)
{
echo $info[$i]["sn"][0]." ".$info[$i]["givenname"][0]." ".$info[$i]["mail"][0]." ".$info[$i]["departmentnumber"][0]." ".$info[$i]["description"][0]."<br>";
}
$end = $microtime(TRUE);
echo "Le script s'est exécuté en ".($end - $start)." micro secondes.";

??

as tu essayé sur un autre navigateur à tout hasard...

je suis un peu à court d'idées aussi
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h44   #13
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
Même soucis avec un autre navigateur.
je me demande si des histoires de réseau peuvent influer sur ce problème.

Je ne suis pas informaticien et j'arrive là à mes limites : il me reste plus qu'à contacter la bonne personne dans ma structure ....
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 14h56   #14
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
ta boucle te donne quoi comme temps d'exécution ?

Code php :
1
2
3
4
5
6
7
$start = microtime(TRUE);
For($i=0;$i<sizeof($info);$i++)
{
echo $info[$i]["sn"][0]." ".$info[$i]["givenname"][0]." ".$info[$i]["mail"][0]." ".$info[$i]["departmentnumber"][0]." ".$info[$i]["description"][0]."<br>";
}
$end = $microtime(TRUE);
echo "Le script s'est exécuté en ".($end - $start)." micro secondes.";
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h05   #15
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
Le script s'est exécuté en 0.00231599807739 micro secondes.

C'est vraiment après qu'il patine...
Faudrait avoir une vue temps réel sur ce que charge Firefox....(pas de message dans console)
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h13   #16
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
as tu l'extension firebug ?

regarder dans l'onglet réseau pour voir ce qui se charge
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h39   #17
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
Je viens de l'installer.

Pas vraiment d'infos...
3s d'attente pour ma page
mais + 35s pour l'évènement DOMContentloaded

ce qui se charge est conforme à ce que j'attends...
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h55   #18
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
t'as du javascript qui se load ?
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 16h20   #19
Candidat au titre de Membre du Club
 
Inscription : août 2008
Messages : 78
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 78
Points : 12
Points : 12
non ....
apidou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 16h42   #20
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
et ça ?

Code :
//ldap_extract("ou=DREAL Alsace,ou=DR,ou=melanie,ou=organisation,dc=equipement,dc=gouv,dc=fr","(mineqTypeEntree=BALI)");
__________________
Le savoir est utile que s'il est partagé par tous.
/(bb|[^b]{2})/
!sleep() ? array((string))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h03.


 
 
 
 
Partenaires

Hébergement Web