私はuseridでユーザー情報を取得するためにldap searchを使用しています。合計500のレコードがあり、LDAPからユーザー情報を取得する機能が500回呼び出されています。php - ldapの検索に30-35秒かかります
inside while loop
$userInfo = getUserInfo($booking_info['user_id']);
次に、getUserInfo関数を示します。
function getUserInfo($passedUserId){
global $ldapConnection;
global $bind;
global $baseDn;
if($bind){
$ldapFilter = "(sAMAccountName=" . $passedUserId . ")";
$ldapResult = ldap_search($ldapConnection, $baseDn, $ldapFilter);
$ldapInfo = ldap_get_entries($ldapConnection, $ldapResult);
if(isset($ldapInfo[0])){
if($ldapInfo[0]["givenname"][0]){
$firstName = $ldapInfo[0]["givenname"][0];
}
if($ldapInfo[0]["sn"][0]){
$lastName = $ldapInfo[0]["sn"][0];
}
if($ldapInfo[0]["mail"][0]){
$emailAddress = $ldapInfo[0]["mail"][0];
}
if ($ldapInfo[0]["extensionattribute1"][0]) {
$costCentre = $ldapInfo[0]["extensionattribute1"][0];
}
if ($ldapInfo[0]["department"][0]) {
$organizationalUnit = $ldapInfo[0]["department"][0];
}
if ($ldapInfo[0]["manager"][0]) {
$lineManager = split("=", split(",", $ldapInfo[0]["manager"][0])[0])[1];
}
return Array($firstName, $lastName, $emailAddress, $costCentre, $organizationalUnit, $lineManager);
}
}
return Array('None', 'None', 'None', 'None', 'None', 'None');
}
これは、要求を完了するのに約30-35秒かかります。
この機能を最適化して検索を高速化するにはどうすればよいですか?
ボトルネックがどこかもしれないとは言い難いです。あなたの 'getUserInfo'関数のすべてを' return true; 'のような単純なものに置き換え、再度実行して、遅い応答時間を引き起こしているかどうか確認できますか? – Daniel
ありがとう@ダニエルはい私はやりましたが、 'ldap_search'が遅くなっていることがわかりました。では、どうすれば早く動作する組み込み関数を作ることができますか? – Valay