Здравствуйте.
При некотором совпадении процессов не смотря на блокировку обрезается часть файла.
Более подробно:
$fp=fopen($rfile,"a+");
flock(fp, LOCK_EX);
foopen открывает файл. Так вот если начало второго процесса (наложение блокировки) попадает между fopen и flock , то снизу из файла пропадает кол-во символов схожее с количеством дописанном во втором процессе, причем данные записанные во втором процессе (если изменения были допустим в середине файла), сохраняются.
Получается что если файл успел открыться а блокировка наложиться не успела то открытый поток $fp сохраняет то же количество байт информации что было в открытом потоке а все остальное отрезает.
Легко это проверил, поставив sleep между fopen и flock и запустив второй процесс без sleep
Подскажите пожалуйста можно ли как-нибудь решить этот баг? Ведь сначала поставить блокировку а потом открывать не получается.
Заранее благодарен.