Если будет Запрос HTTP, прибывающий в веб-сервер от многих клиентов, то запросы будут обработаны в порядке.
Для всего запроса HTTP я хочу использовать маркерную систему блока. Таким образом, когда существует первый Запрос, я пишу число в файл и увеличиваю число для следующего запроса и так далее..
Я не хочу делать это в DB, так как размер DB увеличивается..
Это правильный способ сделать это. Предложите
Править: Таким образом, если пользователь добавляет комментарий, комментарий должен быть сохранен в файл вместо DB.So для отслеживания его существует переменная, которая увеличена для каждого request.this числа, будет использоваться в письменной форме имя файла и отошлет его для будущего reference.so, если будет много запросов, это правильный способ сделать это..
Спасибо..
Почему бы не заблокировать ( http://php.net/manual/en/function.flock.php ) файлы в папке?
Блокирует первый вызов 01,
Блокирует второй вызов 02,
3-й вызов блокирует 03,
01 разблокируется,
4-й вызов блокирует 01
В основном каждый скрипт php пытается заблокировать первый файл, который может, и когда это делается, он разблокирует / стирает файл.
Я использую это в системе с более чем 250 дочерними процессами, порожденными «менеджером процессов». Пытался использовать базу данных, но это все тормозило.
Если вы хотите продолжать увеличивать номер файла для некоторого контента, я бы предложил использовать mktime () или time () и использовать
$now=time();
$suffix=0;
while(is_file($dir.$now.'_'.$suffix)) {
$suffix++;
}
Но опять же, в зависимости от того, как вы хотите читать данные или использовать их, существует много опции. Не могли бы вы предоставить более подробную информацию?
----- РЕДАКТИРОВАТЬ 1 -----
$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.
Если вы хотите показать комментарии, вы просто сортируете их по имени файла ....
Размер базы данных не должен увеличиваться. Все, что вам нужно, это одна строка. По идее, логика такова:
Read row, taking lock, getting the current count
Write row with count incremented, releasing lock
Обратите внимание, что вы используете блокировки базы данных, чтобы иметь дело с возможностью одновременной обработки нескольких запросов.
Итак, я предлагаю использовать базу данных как место для управления вашим счетом. Вы по-прежнему можете записывать свои другие данные в файлы, если хотите. Тем не менее, вам по-прежнему понадобится работа с файлами. Это намного сложнее с базой данных?