Что ты делаешь? Звучит очень странно и чревато опасностью. Я, конечно, не хотел бы позволить сценарию CGI создавать новые каталоги. Возможно, будет лучшее решение для того, чего вы пытаетесь достичь.
Сколько каталогов вы ожидаете иметь? Чем больше записей у вас есть в любом каталоге, тем медленнее будут дела. Вы должны разработать схему, в которой вы можете хешировать вещи в структуру каталогов, которая распределяет файлы так, чтобы ни один каталог не содержал столько элементов. Скажем, если у вас есть имя «0123456789», вы создаете структуру каталогов, например:
0/01/0123456789
Вы можете иметь столько уровней каталогов, сколько захотите. Смотрите структуру каталогов CPAN, например. Моего автора зовут BDFOY, поэтому мой каталог авторов - author / id / B / BD / BDFOY. Таким образом, не будет ни одного каталога с большим количеством записей (если ваш идентификатор автора не ADAMK или RJBS).
У вас также есть потенциальная проблема конкуренции, чтобы решить. Между временем, когда вы обнаруживаете самое последнее, и временем, когда вы пытаетесь создать следующий, вы, возможно, уже создали каталог.
Что касается поставленной задачи, думаю, я бы поставил на system
эту задачу, если у вас будет миллион каталогов. С чем-то вроде:
ls -t -d -1 [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -1
Не думаю, что вы справитесь с этой задачей быстрее, чем ls
. Если существует большое количество каталогов, стоимость ветки должна быть перевешена той работой, которую вы должны выполнить, чтобы пройти все самостоятельно.
Однако я подозреваю, что вам действительно нужна какая-то база данных.