0

おはようございます。

エンタープライズ LDAP (MS Active Directory) と対話するスクリプトがいくつかあります。sleep() コマンドでスクリプトを調整しないと、次のエラーが発生することがわかりました。

Warning: ldap_bind() [function.ldap-bind]: Unable to bind to server: Can't contact LDAP server in..

私のスクリプトのほとんどは、Active Directory オブジェクトのメンバーを取得し、それらの結果のメンバーを見つけることです。

結果がなくなるまで、取得したメンバーを実行中に自分自身を呼び出す getMembers() という関数があります。

私はしなければならないことがわかりました:

sleep(1);
getMembers();

私のバインドが失敗してタイムアウトしないように。

スクリプトの途中で追い出されることなく、ldap からがらくたを叩き出すより良い方法があるかどうか疑問に思っています。1 秒間の一時停止により、スクリプトがすべての項目を処理するのに 97 時間かかることになります。この時間を半分に短縮して、週末に実行できるようにしたいと考えています。

ありがとう

編集 - - - - - - - - - - - - -

そのため、調査の結果、LDAP には 1000 レコードの制限があり、PHP には LDAP からの結果をページングする方法がないことがわかりました。LDAP をクエリする方法 (一度に 1 つのクエリ) により、LDAP を呼び出すすべての反復をカウントすることができ、そのカウンターが 900 程度に達すると、1 分間スリープさせます。このようにして、私はより多くの結果を得ています。ただし、PHP での LDAP ページングの解決策を見つけることができませんでした。

4

0 に答える 0