Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Блокирование файлов
 
 автор: antf   (13.02.2005 в 00:58)   письмо автору
 
 

Здраствуйте. Сейчас занимаюсь разработкой собственной системы голосования. Вся служебная информация хранится в двумерных файлах. Как предотвратить одновременный доступ к служебным файлам, который может возникнут тогда, когда два посетителя проголосовали одновременно. Поможет ли здесь функция flock(). Приведу код функции, которая осуществляет запись в файл:


<?
  
function SaveStringInFile($FileName$Str$Mode)
  {
    
$fp=@fopen($FileName$Mode);
    
flock($fp2);
    if(
$fp)
    {
      
fwrite($fp$Str);
      
flock($fp3);
      
fclose($fp);
    } else 
$ErrorMessage "К сожалению, система голосования сейчас занята, попытайтесь, пожалуйста, проголосовать еще раз через несколько секунд ";
    return(
$ErrorMessage);
  }
?>

   
 
 автор: cheops   (13.02.2005 в 12:08)   письмо автору
 
   для: antf   (13.02.2005 в 00:58)
 

Лучше переписать следующим образом:
<?php
  
function SaveStringInFile($FileName$Str$Mode
  { 
    
$fp=@fopen($FileName$Mode); 
    if(
$fp
    { 
      if(
flock($fp2))
      {
        
fwrite($fp$Str); 
        
flock($fp3); 
      } else 
$ErrorMessage "К сожалению, система голосования сейчас занята, попытайтесь, пожалуйста, проголосовать еще раз через несколько секунд "
      
fclose($fp); 
    } else 
$ErrorMessage "К сожалению, ошибка в системе голосования "
    return(
$ErrorMessage); 
  }
?>

Иначе получается, что результат возращённый функцией flock() никак не используется...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования