PDA

Просмотр полной версии : Хелп! Проблемка возникла...


Den88
11.01.2002, 11:45
Поможите люди добрые.
Есть у меня текстовый файлик, состоящий из 10 строк. На восьмой строчке сначала стоит нолик. В другом файле есть скрипт и форма, при заполнении которой (формы) в текстовом файле к цифре на восьмой строчке нужно прибавлять еденицу. И так каждый раз, когда нажимают Submit. Никто не подскажет как это воплотить в жизнь? :confused:

Crazy
11.01.2002, 16:00
"Тупая" реализация:

1. Функцией file() читаешь файл в массив.
2. Извлекаешь старый счетчик, инкрементируешь и ставишь обратно в массив.
3. Перезаписываешь файл данными из массива.

Минусы: будут теряться тики счетчика, если два пользователя практически одновременно нажмут SUBMIT. Оцени, важно ли это для тебя.

DeepDiver
13.01.2002, 12:19
Если важно, то мона на файл во время чтения/записи lock положить

Crazy
13.01.2002, 15:17
Оригинал написал(а) DeepDiver
Если важно, то мона на файл во время чтения/записи lock положить

Если ты про flock() , то: "On most operation systems flock() is implemented at the process level. When using a multithreaded server API like ISAPI you cannot rely on flock() to protect files against other PHP scripts running in parallel threads of the same server instance! " :(

DeepDiver
14.01.2002, 10:09
ГЫ... Что-то я об этом не подумал....

sapenov
23.01.2002, 08:22
Создай директорию /stats и там создавай пустой файл после каждой удачной регистрации. Потом подсчитывай кол-во файлов и заноси куда нужно - в файл или в базу.
Раз в день(неделю , месяц) чисти директорию.

Таким образом можно решить проблему с одновременным доступом к одному файлу(записи в БД).

Удачи.

Demon1983
23.01.2002, 09:35
А в принципе, если число в счетчике - это количество зарегистрировавшихся людей, то я вообще не вижу смысла в этом счетчике....
Число записей в базе данных и будет нужным тебе числом....

sapenov
23.01.2002, 09:39
верно товарищ сказал :)

Постановку задачи надо максимально четко определять,
а то мы тут гадаем на кофейной гуще :)