- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
накладываются ошибки его кода.
Ждем от вас чтобы вы их нам указали.
Ещё, по-моему, flock не лочит файлы на сетевых файловых системах.
Может, на хостинге используется внешнее хранилище?
Как вариант, можно использовать '.lock' файлы
Ждем от вас чтобы вы их нам указали.
А что указывать, мало того что нет проверки на залочили файл или нет, и обработки события если вдруг файл не залочился
так еще вызвав fopen с a+, делаем после этого кучу ненужных и непонятных действий
Ей богу лучше бы молчали 🤣
А что указывать, мало того что нет проверки на залочили файл или нет, и обработки события если вдруг файл не залочился
либо всегда да либо всегда нет, другого не бывает, претензия не принята.
так еще вызвав fopen с a+, делаем после этого кучу ненужных и непонятных действий
То что вы не понимаете смысла этих действий не означает что они не нужны, а лишь, что вы слабы в php
Скиньте ваш скрипт записи данных в файл и я думаю, что он будет гавном. Почему так уверен в этом? Потому что 99% скриптов записи в файл в сети фиктивные и вероятность что вы покажете что-то путевое равна 1%. Только акцентирую внимание, что я имею ввиду скрипт чтения из файла и записи в него же в первую строку.
.
если ещё учесть этот момент из документации:
то первая операция чтения не должна вообще ничего считывать.
так еще вызвав fopen с a+, делаем после этого кучу ненужных и непонятных действий
таки да. действия ТС не похожи на семантику a=append. зачем лишний раз запутывать библиотеку php ? обещал добавлять данные - вот и добавляй.
я сейчас проверил "c+" - отлично работает. а "a+" действительно необъяснимо глючит. где-то у них еще внутри буферизируется что-то.
еще вот интересно, что в комментах к функции flock в документации некто pentek_imre at mailbox dot hu http://ru.php.net/manual/en/function.flock.php описывает сценарий race condition, но по-моему он гонит. он тоже сделал открытие файла в "a+" и точно так же его проглючило.
мой вариант по выполняемым операция идентичен оригинальной логике и ТС и Пентека того, но в режиме "c+" ничего не глючит.
Топик лишнее подтверждение того, что локи в php лучше не использовать.
Старый добрый tempnam + rename рулят не по детски.
Даже если сделать всё правильно, всё равно в результате что-нибудь где-нибудь у кого-нибудь пойдет не так, или потом кто-нибудь где-нибудь почему-нибудь в чем-нибудь не разберется и все испортит:)
p.s.: если что - ТС, про tempnam и rename - это совет.
еще вот интересно, что в комментах к функции flock в документации некто pentek_imre at mailbox dot hu http://ru.php.net/manual/en/function.flock.php описывает сценарий race condition, но по-моему он гонит. он тоже сделал открытие файла в "a+" и точно так же его проглючило.
Вот у меня та же фигня что и у пентека получалась
Then generate a race situation with two php processes:
1: open file ok, no file found, create
2: open file ok, file found seek to the end (0lenght file so to the beginning)
1: lock file ok
2: flock waits since file is already locked.
1: write ok
1: unlock ok
2: flock ok this process now continues
1: fclose ok
2: write something, but due to prebuffering the file is now empty, so content written by 1 is now unconsidered, forgotten.
2: unlock ok
2: fclose ok
file will have only the content from process 2
И почему то этот глюк происходил только если процессы обращались к одному и тому же скрипту, если к разным, то глюка не было.
Fearful, ну вот разве я не написал такой же наивный код, который Пентек критикует?
вот его якобы неправильный вариант
дальше он упускает важный момент
2: flock ok this process now continues
1: fclose ok
2: должен сделать перемотку в конец файла, потому что с момента открытия в "a+" файл изменился
2: write something, but due to prebuffering the file is now empty, so content written by 1 is now unconsidered, forgotten.
2: unlock ok
"but due to prebuffering the file is now empty" - какой еще prebuffering? при открытии файла через fopen происходит его считывание ? Глючит его.
Да все работает, но это все равно не объясняет мне почему не пашет a+ это что тупо глюк php? Где вы вообще этот режим с+ откопали я не могу вообще найти его описание.