сканировать каталог с ограничением количества файлов? - PullRequest
0 голосов
/ 10 сентября 2011

Я написал некоторый код для печати файлов внутри папки с ограничением и смещением (как у MySQL LIMIT).

Мой код:

/*
files:
.
..
read.txt
*/
$dir = "lab";
$limit = 2;
$file_id = 1;
$start = 1;
$files = array();
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    if($file_id > $start and $file_id >= $limit){
        $files[$file_id] = $filename;
    }
    $file_id++;
}   
print_r($files);
/*
files:
Array ( [2] => .. [3] => read.txt ) 
*/

Мои папки могут содержать 1000 или более файлов, и эта функция будет выполняться для каждого посетителя.

Итак, я хочу сделать эту работу без зацикливания, это возможно? Если это не так, есть ли способ сделать это быстрее?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

http://www.php.net/scandir, вероятно, лучший способ избежать зацикливания себя.

Если вы хотите, вы также можете внедрить базовую систему START / LIMIT, такую ​​как

$start = 5;
$limit = 20;

$thisFile = 0;

while (false !== ($filename = readdir($dh))) {
    // Check the start
    if ($thisFile < $start)
        continue;
    $thisFile++;

    // Check the end
    if ($thisFile > $limit)
        break;

    // Your other code can go in here
}
0 голосов
/ 10 сентября 2011

Вы можете получить весь список файлов в каталоге без петель с помощью scandir .

После того как вы получили массив файлов, вы можете применить любой вид фильтрации (используя array_filter ) и ограничения (используя array_slice )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...