Я создаю PHP-скрипт, который будет включать всех пользователей под конкретным человеком, в основном прямые отчеты, которые могут стать очень большими.
Мне удалось заставить скрипт работать на 1000 записей. Я нашел этот сайт https://doc.bccnsoft.com/docs/php-docs-7-en/function.ldap-control-paged-result.html и поместил его вокруг моего кода. Проблема в том, что я не знаю, как заставить этот скрипт работать для чего-то более 1000 записей. Я хочу, чтобы он возвращал 2000, 5000, 10000 записей, пока он не получит запрошенные данные.
<?php
set_time_limit(60);
$executionStartTime = microtime(true);
//LDAP Directory Services Settings
define("LDAP_SERVER", "test.com");
define("LDAP_DN", "OU=Users,DC=test,DC=com");
define("USER", "test");
define("LDAP_DOMAIN", "@test.com");
define("LDAP_USER", "test");
define("LDAP_PASS", "password");
/* Connect to LDAP Server */
$ds = ldap_connect(LDAP_SERVER);
/* Bind to LDAP Server */
$user_fqdn = LDAP_USER.LDAP_DOMAIN;
$bind = @ldap_bind($ds, $user_fqdn, LDAP_PASS);
//@ldap_bind($ldapconn, $ldapuser."@test.com", $ldappass);
/* Options for searching Whole Domain */
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
//ldap_set_option($ds, LDAP_OPT_SIZELIMIT, 5);
/* Search Filter */
$filter = "(&(objectCategory=Person)(sAMAccountName=*)(manager:1.2.840.113556.1.4.1941:=cn=".USER.",OU=Users,DC=test,DC=com))";
$justthese = array('mail', 'employeeType', 'manager');
/* Search */
$pageSize = 1000;
$cookie = '';
do {
ldap_control_paged_result($ds, $pageSize, true, $cookie);
$result = ldap_search($ds, LDAP_DN, $filter, $justthese);
$entries = ldap_get_entries($ds, $result);
echo "<pre>";
var_dump($entries);
echo "
";
ldap_control_paged_result_response ($ ds, $ result, $ cookie);
} while ($ cookie! == null && $ cookie! = '');
$ executeEndTime = microtime (true);
$ seconds = $ executeEndTime - $ executeStartTime;
//Распечатай
echo "Этот скрипт взял". $ секунд. " выполнить.";
?>
По сути, я хочу, чтобы это выполнялось на задании cron и просто получало все записи из ldap и сбрасывало их в базу данных (я еще не дошел до части db). Не только 1000 записей.