А вот пример того что я сделал с блокировкой:
$file_name='file.txt';
$data=file($file_name);
$file=fopen($file_name,'a+');
flock($file,LOCK_EX);
ftruncate($file,0);
fputs($file,trim($data[0])."\n");
for($i=1;$i<count($data);$i++):
list($count,$text)=explode(':|||:',$data[$i]);
if($_GET['vote']==$i) $count++;
$vote_text=trim("$count:|||:$text");
fputs($file,"$vote_text\n");
endfor;
fflush($file);
flock($file,LOCK_UN);
fclose($file); ;
$data=file($file_name);
echo'
<table border="0"><tr><td height="6px"></td></tr></table>
<TABLE class="vote" border="0" width="140px" cellpadding="0" cellspacing="0">
<TR><TD colspan="2" style="BORDER-BOTTOM:#FF9900 2px solid;" bgcolor=3B95D1 align="center"><p class="nav">Ãîëîñîâàíèå</p></TD></TR>
<TR><TD colspan="2" class="vote_top">',$data[0],'</TD></TR>';
for($y=1;$y<count($data);$y++):
list($count,$text)=explode(':|||:',$data[$y]);
@$count_all+=$count;
endfor;
for($i=1;$i<count($data);$i++):
list($count,$text)=explode(':|||:',$data[$i]);
@$count_percent=($count/$count_all)*100;
echo'
<TR><TD class="vote">',$text,'</TD><TD class="vote_counter">',$count,'/',(int)$count_percent,'%</TD></TR>';
endfor;
echo'
<TR><TD class="vote_down">Голосование.:</TD><TD class="vote_counter_all">',$count_all,'</TD></TR>
<TR><TD colspan="2" style="BORDER-TOP:#FF9900 2px solid;" height="3px" bgcolor=3B95D1><p style="font-size:3px;"> </p></TD></TR>
</TABLE>';
Извините, плиз за столь огромное колличество кода, но по моему мнению тут можно увидеть картину наиболее полно.
ЗЫ. А что касается мускула, то я его просто еще не знаю

(но работы ведуться), но так же я согласен и с тем что его использовать для такого маленького скриптика будет лишним(он у меня всего 3 кб).