|
не работает flock
|
|||
---|---|---|---|
#18+
Прошу помощи вчера весь день убил, мозги кипят уже ничего не втыкаю (( И так, вот собственно скрипт. Всё это надо завести под php 5.4.45. Проверял на серве CentOS 7 и под виндой на OpenServer 5.2.2. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Проверить скрипт можно двойным запуском. Первая копия отработает и покажет ровно 5 сек. Вторая должна отобразить что-то вроде этого: Код: php 1. 2. 3. 4. 5.
Проблема вот в чем. Еще неделю назад этот скрипт работал и я про него забыл, пока не начались проблемы с совместным доступом к файлу. Я подумал, что раз тестирую на винде, то может случиться что угодно. Ан нет! На линухах и не только под цент та же ситуация. flock() внезапно перестал лочить файл одновременно на всех сервах. Он работает так, как будто файл не залачивается вообще никак, оба скрипта отрабатывают ровно 5 сек и не выдают никаких ошибок. Что делать, куда копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 10:55 |
|
не работает flock
|
|||
---|---|---|---|
#18+
PS. Да, lock.txt надо создать заранее ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 10:56 |
|
не работает flock
|
|||
---|---|---|---|
#18+
TolikDflock() внезапно перестал лочить файл одновременно на всех сервах.Какое-то обновление ОС устанавливалось? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 11:25 |
|
не работает flock
|
|||
---|---|---|---|
#18+
vkle, На своих сервах нет. А что, скрипт рабочий шо ле? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 12:03 |
|
не работает flock
|
|||
---|---|---|---|
#18+
TolikDvkle, На своих сервах нет. А что, скрипт рабочий шо ле? Windows 8.1 + php 7.1 все ок ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 12:10 |
|
не работает flock
|
|||
---|---|---|---|
#18+
TolikDА что, скрипт рабочий шо ле?Вполне рабочий. Только вот чтоб придать ему автономность и обойтись без TolikDPS. Да, lock.txt надо создать заранееможно сделать Код: php 1.
Конечно, если это не противоречит логике. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 12:31 |
|
не работает flock
|
|||
---|---|---|---|
#18+
Или даже так Код: php 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 12:34 |
|
не работает flock
|
|||
---|---|---|---|
#18+
HettTolikDvkle, На своих сервах нет. А что, скрипт рабочий шо ле? Windows 8.1 + php 7.1 все ок Windows 8.1 + php 7.1 тот же скрипт, та же хрень пойду расшибусь об стену ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 13:19 |
|
не работает flock
|
|||
---|---|---|---|
#18+
vkle Код: php 1.
Конечно, если это не противоречит логике. Не противоречит, ибо изначальный код такой: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
А тот что выше это результат бесплодных изысканий глубокой мысли ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 13:25 |
|
не работает flock
|
|||
---|---|---|---|
#18+
Всё? Кончились идеи? Не может быть, что у всех везде работает, один я туплю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 13:57 |
|
не работает flock
|
|||
---|---|---|---|
#18+
Собственно, пхпшная функция flock() - это интерфейс к аналогичной системной функции, которая, в свою очередь, взаимодействует с файловой системой. TolikDнеделю назад этот скрипт работалКод скрипта за это время не менялся? Тогда надо смотреть, что из вышеперечисленного изменилось за неделю. Единственное предположение, что на минувшей неделе файловая система, где размещается lock.txt перенесена на удаленный сервер, откуда и монтируется. Но такое изменение как-то сложно не заметить. Попробуйте разместить файл блокировки на других файловых системах сервера, куда есть доступ (в /tmp, например). TolikDОн работает так, как будто файл не залачивается вообще никак, оба скрипта отрабатывают ровно 5 сек и не выдают никаких ошибок.Вы полагаете, что flock() стал _всегда_ возвращать TRUE, как признак успешной блокировки, при этом фактически не блокируя файл? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 14:30 |
|
не работает flock
|
|||
---|---|---|---|
#18+
vkle, vkleВы полагаете, что flock() стал _всегда_ возвращать TRUE, как признак успешной блокировки, при этом фактически не блокируя файл? Да, именно так и полагаю. То есть именно так и происходит: flock всегда возвращает TRUE. Но я похоже что нащупал в чем проблема, похоже что даже не в flock Код скрипта был отлажен до мсек и отправлен на серв без изменений. Любые проблемы тестирую на винде в отдельном пхп файлике. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 14:39 |
|
не работает flock
|
|||
---|---|---|---|
#18+
TolikD, Всё, код рабочий, виноват хром, расходимся ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 15:33 |
|
не работает flock
|
|||
---|---|---|---|
#18+
А может блокировка сессий просто? Причём тут хром? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 15:53 |
|
не работает flock
|
|||
---|---|---|---|
#18+
HettА может блокировка сессий просто?Вряд ли. Тогда б на старте сессии зависал скрипт. HettПричём тут хром?+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 15:55 |
|
не работает flock
|
|||
---|---|---|---|
#18+
Откройте скрипт на двух вкладках сразу, хром будет ожидать загрузки первой вкладки из-за команды sleep, вот и будет иллюзия кривой работы скрипта ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 16:55 |
|
не работает flock
|
|||
---|---|---|---|
#18+
На IE такого не происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 16:57 |
|
не работает flock
|
|||
---|---|---|---|
#18+
Видимо, Хром, как и ФФ, не торопится дважды ломиться на один и тот же URL, активно пользуясь кешем. Логично предположить, что если ответ на первый запрос вернет заголовок с предложением "закешировать на часок", то второй запрос и вовсе не потребуется отправлять. Потому и ждет. Вообще, есть простой прием, позволяющий "отключить кеш" - делать URL уникальным для каждого запроса. Например, подставляя параметр со случайным числом. Или, в Вашем случае, на одной из вкладок добавить в адрес что-то вроде "?1". По идее, должно сработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 17:29 |
|
не работает flock
|
|||
---|---|---|---|
#18+
vkle, отдача корректных заголовков сервером - не подойдёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 17:42 |
|
не работает flock
|
|||
---|---|---|---|
#18+
По дефолту и так не будет никакого кэширования. Вообще зачем было это в браузере запускать, когда проще из консоли такие эксперименты проводить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 18:29 |
|
не работает flock
|
|||
---|---|---|---|
#18+
Изопропилvkle, отдача корректных заголовков сервером - не подойдёт?Нет. Браузер обнаруживает, что точно такой же запрос уже отправлен еще до получения заголовков ответа. HettПо дефолту и так не будет никакого кэширования.Ага, не будет. Или будет. От заголовков ответа зависит. Только браузер об этом _пока_ещё_ ничего не знает по понятной причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2017, 20:25 |
|
|
start [/forum/topic.php?fid=23&msg=39497201&tid=1460559]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 173ms |
0 / 0 |