Обработка медленных запросов с помощью foreach в PHP - PullRequest
1 голос
/ 28 февраля 2020

TLDR, я пишу некоторый код в PHP, чтобы подсчитать общее количество моих файлов и папок в каталоге, где находится мой проект.

У меня около 15.000 файлов и 1000 папок, но эти запросы заняли у меня около 6 секунд и 1 секунду для страниц, так что в общей сложности мне пришлось ждать 6-8 секунд, пока страница загрузилась и закончила sh.

Есть ли способ ускорить это? ? Я пытался использовать array_column в соответствии с этой темой: PHP Foreach l oop слишком медленно при применении к большим массивам

Но все равно показывал то же самое, все равно потребовалось 6 секунд.

Вот часть моего кода.

$files= 0;
$dir       = glob("../");
foreach ($dir as $obj) {                    
    if (is_dir($obj)) {
        $folders++;
        $scan = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($obj, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
        foreach ($scan as $file) {
            if (is_file($file)) {
                $files++;
                $exp = explode(".", $file);
                $exp2 = isset($exp[3]) ? $exp[3] : null;
                if ($exp2 == "txt") {
                    $files+;
                }

            } else {
                $folders++;
            }
        }
    } else {
        $files++;
    }
}
unset($exp2);

Где моя переменная $ exp состоит из 4 индексов.

array ( 
0 => '', 
1 => '', 
2 => '\\dashboard\\image37', 
3 => 'txt', )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...