Почему бы не заблокировать (http://php.net/manual/en/function.flock.php) файлы в папке?
Блокировка первого вызова 01,
Блокировка второго вызова 02,
Блокировка третьего вызова 03,
01разблокируется,
4-й вызов блокируется 01
В основном каждый php-скрипт пытается заблокировать первый файл, который он может, и когда это сделано, он разблокирует / стирает файл.
Я используюэто в системе с 250+ дочерними процессами, порожденными «менеджером процессов».Пытался использовать базу данных, но все это замедлилось.
Если вы хотите продолжать увеличивать номер файла для некоторого контента, я бы предложил использовать mktime () или time () и использовать
$now=time();
$suffix=0;
while(is_file($dir.$now.'_'.$suffix)) {
$suffix++;
}
Но опять же, в зависимости от того, как вы хотите прочитать данные или использовать их, есть много вариантов.Не могли бы вы предоставить более подробную информацию?
----- EDIT 1 -----
- Каждый запрос имеет «файл блокировки» и сохраняет идентификатор блокировки (номер) находится в $ lock.
- одновременно три посетителя публикуют сообщения с идентификатором блокировки 01, 02, 03 (последний шаг в описанной ситуации)
$now=time();
$suffix=0;
$post_id=30;
$dir='posts/'.$post_id.'/';
if(!is_dir($dir)) { mkdir($dir,0777,true); }
while(is_file($dir.$mktime.'_'.$lock.'_'.$suffix.'.txt')) {
$suffix++;
}
В то время как не должно быть необходимости, но я обычно держу это так или иначе на всякий случай :).Это должно создать текстовый файл 30 / 69848968695_01_0.txt и ..02_0.txt и ..03_0.txt.
Когда вы хотите показать комментарии, вы просто сортируете их по имени файла ....