Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не работает flock?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
shum0531
Отправлено: 22 Марта, 2013 - 10:49:10
Post Id



Гость


Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Вот часть вода из класса работы с файлами
CODE (htmlphp):
скопировать код в буфер обмена
  1.         private function SetJSON($file, $data){
  2.                 $data = json_encode($data);
  3.                 $f = fopen ($file, 'a+' );
  4.                 flock ($f, LOCK_EX);
  5.                 ftruncate($f, 0);
  6.                 fseek($f, 0, SEEK_SET);
  7.                 fwrite($f, $data);
  8.                 flock ($f, LOCK_UN );
  9.                 fclose ($f);   
  10.         }
  11.         private function GetJSON($file){
  12.                 $f = fopen ($file, 'r');
  13.                 flock ($f, LOCK_SH);
  14.                 $data = file_get_contents($file);
  15.                 flock ($f, LOCK_UN);           
  16.                 fclose ($f);
  17.                 return json_decode($data, true);
  18.         }

Как видите данные методы только пишут и читают.
есть еще один INSERT, который :
    вызывает GetJSON(читает)
    добовляет в массив еще некие данные
    и вызывает SetJSON(записывает обратно)

мой скрипт в цикле добовляет по 10 записей через INSERT
Далее иду в браузер нажимаю F5 и держу примерно 3-5сек
в итоге вижу "всего записей = 1197"
куда то делось 3 или 23 или 33 или 43........ записей
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Марта, 2013 - 11:13:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну, раньше под виндой flock действительно не работал.
Сейчас вроде как работает.

Через ф5 узнать не выйдет:
Браузеры никогда не делают 100500 запросов,
и уж тем более не ждут 100500 ответов сервера,
и не показывают последний 100500-ый на экране.
Что первое пришло - то и покажу, остальное проигнорю.
Никакой синхронизации кароче.
 
 Top
Мелкий Супермодератор
Отправлено: 22 Марта, 2013 - 11:24:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Как минимум, file_get_contents не имеет никакого отношения к функциям fopen, flock, и вовсе здесь выполняет двойную работу.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB