データベースの読み取りは、このようなファイルシステムの読み取りよりも高速になると思います。
SQLクエリを実行し、グループ化されたフォルダごとのカウントを取得することをお勧めします。
// Example Query
SELECT COUNT(file), folderId As Count FROM photos WHERE folderId IN ('1', '2') GROUP BY folder
// It would be beneficial to have a flag on the folders that would enable or disable them
// that way you're not iterating through folders that we already know are > 5k
// You would run this and have seperate query that would pull in these folder names
// and passing them to the above query.
SELECT foldername, folderId FROM folders WHERE countFlag = 0;
//Example Conditional.
if($Count > 5000):
// Over 5k Do Something
//Since were over 5k, set this folders flag to 1
// that way we arent iterating through it again
$countFlag = 1;
else:
// Under 5k Do Something else
endif;
注:実際のコードサンプルが必要な場合は、すぐに何かを作成できます。上記の例では、実際に機能するコードは省略されており、理論上の目的にすぎません。返された行はフォルダーごとにグループ化されているため、これらの行を繰り返す必要があります。