Мучить для голосования MySQL я смысла не вижу.
Лично я все пишу на Perl. Там есть замечательный стандартный модуль DB_File, позволяющий работать с текстовыми файлами как с массивами со всеми вытекающими отсюда возможностями по изменению / вставке / удалению строк. Ни о каких блокировках запариваться не надо, поскольку по сути текстовый файл рассматривается с точки зрения скрипта как БД.
Аналогов этому на PHP нет.
---------------------------
Можно (опять же для Perl) для стандартной работы с файлами использовать следующие функции блокировки и разблокировки:
Обратите внимание: в связи с отсутсвием на форуме тега для обозначения Perl кода, я использовал тег PHP. Но код написан именно для Perl!!!
PHP код:
sub lockfile {
my $lcount=0;
my $handle=shift;
my $lflag=1;
until (flock($handle, 2)) {
sleep .10;
if (++$lcount>50) {$lflag=0}
}
return $lflag;
}
sub unlockfile {
my $handle=shift;
flock($handle, 8);
}
пример вызова:
PHP код:
open (RON,"+<filename") || die;
&lockfile(RON) || die;
...
&unlockfile(RON);
close(RON);
Функция lockfile пытается 50 раз с интервалом обратиться к файлу. Если за этот период он остается заблокирован другим процессом, то возвращается флаг ошибки (нулевой результат на выходе).