Comments 26
Можно ещё использовать подход с многоверсионным деплоем: https://www.youtube.com/watch?v=qMu4YHJV1Z8
if ( isset($_GET['__new_release') ) {
clearstatcache( true );
opcache_reset();
}
php.net/manual/ru/function.clearstatcache.php
php.net/manual/ru/function.opcache-reset.php
старые релизы очищаются и удаляются
Хотя бы один предыдущий релиз хранится для быстрого роллбэка?
Как увидел эти $, да и жутчайшие объявления массивов, сразу хлынули жуткие воспоминания, кошмары, унижения и страдания.
Предупреждать надо.
Всем удачных итераций по пустым массивам, что в пхп нормально.
А по вашему "автолоадеры", что под капотом подключают файлы не иначе как через include/require конструкции, не столкнуться с проблемой такого рода? А что, вдруг, не так с "инклюдами" по путям? — или есть какой-то иной способ подтянуть файл, содержащий не класс? а с какой строчки начинается подключение того же composer в проекте?
1) Laravel: github.com/laravel/laravel/blob/master/public/index.php#L24-L38
2) Symfony: github.com/symfony/symfony-standard/blob/3.3/web/app.php#L5-L7
3) Yii2: github.com/yiisoft/yii2-app-advanced/blob/master/requirements.php#L14
4) Да вообще что угодно, кроме Zend
По-этому, всегда указываются абсолютные пути. И это, кстати, касается не только PHP, но, например, и html с подключением внешних ресурсов через src/href.
1) src="//yoursite.ru/path/to/file.jpg"
— Это абсолютный путь?
— Да.
— Смена протокола влияет?
— Не влияет.
— Нет проблем?
— Да, точно, домен! Это проблема!
2) src="/path/to/file.jpg"
— Это абсолютный путь?
— Да.
— Смена протокола влияет?
— Не влияет.
— Может домен?
— Какой домен?
...
Настоятельно рекомендую почитать мануал по основам путей =)) Всё же странно не знать такое.
В современных это каких? Вот laravel это современный фреймворк? — вы наблюдали как он конфиги грузит и какого они формата? грузит через автолоад? через композер? а кэширование некоторыми фреймворками yaml/xml файлов в php формат, подтягивается как-то иначе?
А то получается, как-то вы вместо того, чтобы рассматривать "современный" код, на который сами так делаете акцент, в.т.ч. указывая на "старые" библиотеки, — вы посмотрели только то, как "современный" код выглядит в вашем приложении, словно это такая вещь в себе, не содержащая исходников и никогда не ссылающаяся на код вне классов.
Речь идёт ведь и о том, что и относительный путь и абсолютный пройдут через real path cache — будь то autoload, будь то простой include/require — под капотом вы будете иметь разжёванный в реальный путь симлинк, который отстаёт от реального мира на X-сконфигурированное время. При чём тут тенденции и какая разница какой путь — я вообще не пойму...
Во всём виноват PHP OPCache?