- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
накладываются ошибки его кода.
Ждем от вас чтобы вы их нам указали.
Ещё, по-моему, 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? Где вы вообще этот режим с+ откопали я не могу вообще найти его описание.