dememax: (glider)
[personal profile] dememax
Никогда не программировал на PHP, да и не особо хочется, а в SuperSonic Imagine понадобилось.
И с тех пор открываю для себя всякие особенности этого языка...
В этот раз напоролся на особенность работы функции realpath().

У меня довольно интенсивные юнит-тесты для сайта, а то там вариантов состояний - много.
А состояния, главным образом, уж так по определению задачи сложилось, хранятся в виде файлов, каталогов и ссылок на них.

И тут долго не могу понять, что за фигня: тесты с участием этой самой realpath() очень как-то нестабильно сыпятся...
Долго копался, не верил своим глазам, перепроверял шелл-командами из тех же мест, где вызывается PHP функция.

И потом по симптомам пошел гуглить. Но гугл не помог, помог поиск в баг-трекере проекта PHP.
И какой замечательный баг там значится, и не баг вовсе, а - фича!

https://bugs.php.net/bug.php?id=78634

И разговор-то какой замечательный!
Человек выяснил, написал небольшой тест (а это иногда дорогого стоит!), у меня, правда, не совсем тот же сценарий, но не важно.
А ему отвечают в стиле вогонов из «Автостопом по галактике», когда они землю разрушали и объявляли, что бумаги о разрушении давно висели на Альфа-Центавре, что всё правильно, мол, там же - кеширование работает, не надо притворяться, что вы - не знали!

Нет, там, действительно, есть в комментариях про это, но до них же ещё нужно добраться!
И справа есть перечисление функций, и такие функции, как realpath_​cache_​get() и realpath_​cache_​size() - там указаны, но обращаешь ли на это внимание, если в описании про функцию об этом даже не упомянули про такую особенность!

А чтобы очистить кеш, надо вызвать clearstatcache(true), true - это аргумент clear realpath cache, который по-умолчанию false!

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 11:17 pm
Powered by Dreamwidth Studios