Slow LDA Queries
| From: | Emilio Panighetti | Date: | Sat, 18 Aug 2001 21:07:26 +0000 |
| Subject: | Slow LDA Queries | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-63295@lists.php.net to get a copy of this message | ||
I have OpenLDAP and PHP 4.0.4p1 on a RedHat 7.1 (plain distribution, didn't
recompile anything, and I use MOD_LDAP to authenticate users to an intranet
site. I want PHP pages to show the real username so I have this function I
call when I want to know the username.
the mod_ldap queries and ldap queries from a Perl CGI return very fast. On
Perl I don't notice an performance issue (with less than a couple
queries/second), but each query using PHP takes about two full seconds (or
more). I did a workaround keeping the result on a session variable, but it's
still slow every time I call this function.
mod_ldap stores the user's dn on the REMOTE_USER environment variable.
Here's the function. I don't know how to make it faster.
Thanks,
Emilio Panighetti
<?php
// Retrieves user's real name from LDAP
function ldapcnsearch()
{
$s_ldapserver = "localhost";
$s_ldapport = 389;
$ds = ldap_connect( "ldap://".$s_ldapserver.":".$s_ldapport );
ldap_set_option( $ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$qar[] = "cn";
if ( $ds ) {
$r = ldap_bind( $ds );
$sr = ldap_read( $ds, getenv( "REMOTE_USER" ), "cn=*", $qar, 0, 1,
1 );
$info = ldap_get_entries($ds, $sr);
$s_RealName = $info[0]["cn"][0];
ldap_close( $ds );
return( $s_RealName );
}
}
?>