проблема с flock

С.

Продвинутый новичок
Честно признаюсь, у меня такого не было. Но у одного моего друга было. Помогла одна недокументированная фича, в строке перед flock() надо поставить специальный управляющий коментарий, который патчит подвешивание сервера:

$f_lock=true; //*PATCH_NON_BLOCK_SERVER*// $f_lock = flock($fp, LOCK_SH);
 

berkut

Новичок
basil83
ты тугой что-ли? тебе в 3-м посте всё сказали. кто-то не отпускает блокировку, либо нагрузка большая и у тебя там очередина из ожидающих блокировки
 

SiMM

Новичок
> кто-то не отпускает блокировку
и этот кто-то использует LOCK_EX
 

kode

never knows best
basil83
открою тебе по большому секрету что в делать блокировку на чтение совсем не нужно, fopen если нужно сама делает блокировку
 

basil83

Новичок
Автор оригинала: berkut
basil83
ты тугой что-ли? тебе в 3-м посте всё сказали. кто-то не отпускает блокировку, либо нагрузка большая и у тебя там очередина из ожидающих блокировки
слушай это и идиоту понятно что кто-то не отпускает, а сервак новый только тестовый сайт сидит так что нагрузки там нет вообще
я ж и спрашиваю совета чтобы кто-то сказал что не отпускает и по какой причине и почему не работает булеан flock-a например если в условии поставить он же должен возвращать фальш коль не может заблокировать, а он вообще тупо виснет на ней!
 

Altex

Новичок
тебя отладке не учили?

вставляешь echo где надо и смотришь на значения переменных (если нет возможности воспользоваться дебаггером), а так же узнаёшь с помощью echo о том, дошло ли выполнение программы до этой строчки

вместо echo можно делать запись в лог файл, добавив предварительно возможность отключать вывод в лог файл в одном единственном месте, и смотреть в этот лог файл одновременно с выполнением скрпта

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

возьми пустой php файл, напиши там одну единственную строку flock (ещё файл) и проверь, будет ли виснуть
дальше добавляешь перед первой строчкой ещё строчку flock и так далее , в зависимости от того, что ты хотел реализовать
 

SiMM

Новичок
kode> открою тебе по большому секрету что в делать блокировку на чтение совсем не нужно, fopen если нужно сама делает блокировку
Это заблуждение - попробуйте убедиться в этом самостоятельно.
 

dr-sm

Новичок
жжоте :D

-~{}~ 15.05.08 18:35:

Автор оригинала: basil83
слушай это и идиоту понятно что кто-то не отпускает, а сервак новый только тестовый сайт сидит так что нагрузки там нет вообще
я ж и спрашиваю совета чтобы кто-то сказал что не отпускает и по какой причине и почему не работает булеан flock-a например если в условии поставить он же должен возвращать фальш коль не может заблокировать, а он вообще тупо виснет на ней!
чувак, она не тупо виснет, она ждет когда отпустит!
LOCK_NB if you don't want flock() to block while locking. (not supported on Windows)
может рейс кондишон где типа:

flock('aaa');
flock('bbb');
vs
flock('bbb');
flock('aaa');
 

basil83

Новичок
$f_lock = flock($fp, LOCK_SH - crc32('Отпусти меня, чудо трава')%5);
вот это заработало)
спасибо тема закрыта!
 

basil83

Новичок
Автор оригинала: Андрейка
basil83
PHP:
$f_lock = flock($fp, LOCK_SH - crc32('Отпусти меня, чудо трава')%5);
а вопрос эта кострукция точно будет блокировать файл?
$f_lock = flock($fp, LOCK_SH - crc32('Отпусти меня, чудо трава')%5);
 
Сверху