Mail.ru Group corporate blog
PHP
System Analysis and Design
Designing and refactoring
Compilers
Comments 26
0
Столкнулся с такой ерундой, когда настраивал автоматический деплой на сервер. Так как проект небольшой и всего один, то проблема была решена перезагрузкой апача.
0
Главное чтобы никто не знал этой строки запроса, или ввести другие методы проверки, а то так легко можно заддосить сервер, постоянно очищая кеш.
0
старые релизы очищаются и удаляются

Хотя бы один предыдущий релиз хранится для быстрого роллбэка?
-7
Зачем я вообще зашёл в этот пост.

Как увидел эти $, да и жутчайшие объявления массивов, сразу хлынули жуткие воспоминания, кошмары, унижения и страдания.

Предупреждать надо.

Всем удачных итераций по пустым массивам, что в пхп нормально.
0

А где вы тут увидели "жутчайшие объявления массивов"? Неужели это вы так отладочный вывод обозвали?

+1
Каждому своё. Но настоящему профессионалу язык не проблема, а всего инструмент.
0
А они не словят race condition, если симлинк на каталог с проектом поменяется в момент подгрузки пачки инклудов? Тогда один файл может прочитаться из старой версии, а следующий — из другой. Не очень-то и атомарненько.
0
При использовании атомарного развёртывания при помощи вебсервера, как это указано в заключении, вебсервер передаёт реальный адрес PHP скрипту, и он никак не может изменится во время выполнения одного запроса.
0
Хм, если в PHP использовать только относительные пути для инклудов, то прокатит.
+1

А по вашему "автолоадеры", что под капотом подключают файлы не иначе как через include/require конструкции, не столкнуться с проблемой такого рода? А что, вдруг, не так с "инклюдами" по путям? — или есть какой-то иной способ подтянуть файл, содержащий не класс? а с какой строчки начинается подключение того же composer в проекте?

0
Это проблема автолоадеров, которые пишут грамотные люди, и они там уже давно решены. Я вообще не вижу смысла в использовании абсолютных путей где бы то ни было. Я ни разу не использовал инклюд по абсолютным путям и не видел его использования в популярных скриптах.
А что, вдруг, не так с «инклюдами» по путям? — или есть какой-то иной способ подтянуть файл, содержащий не класс?

Если вдруг у вас завалялась такая старая библиотека, то использование относительных путей при включении является лучшим выбором.
а с какой строчки начинается подключение того же composer в проекте?

require('../vendor/autoload.php');

Первый и единственный инклюд в современных проектах.
0
Ну хорошо, два инклюда, а не один )
А использование __DIR__ в данном случае ничем не отличается от относительного инклюда. Даже не понятно, зачем оно вообще так сделано.
+1
Для того, чтобы проблем не было. Запуск может происходить из любой части системы, например в юнитах (а точнее функциональных\интеграционных тестах) или через прокси сервер. Короче, не суть. Абсолютные пути всегда гарантируют надёжность и однозначность «отношений», а относительные зависят от настроения разработчика, переходной фазы луны и формы шапочки из фольги на головах у котиков.

По-этому, всегда указываются абсолютные пути. И это, кстати, касается не только PHP, но, например, и html с подключением внешних ресурсов через src/href.
0
По моему опыту наоборот, абсолютные пути приводят к проблемам. Например, при том же подключении внешних ресурсов в html с абсолютными путями приходится их править при переходе на HTTPS и вообще смене домена, с относительными такой проблемы нет.
+1

1) src="//yoursite.ru/path/to/file.jpg"
— Это абсолютный путь?
— Да.
— Смена протокола влияет?
— Не влияет.
— Нет проблем?
— Да, точно, домен! Это проблема!


2) src="/path/to/file.jpg"
— Это абсолютный путь?
— Да.
— Смена протокола влияет?
— Не влияет.
— Может домен?
— Какой домен?


...


Настоятельно рекомендую почитать мануал по основам путей =)) Всё же странно не знать такое.

-1

В современных это каких? Вот laravel это современный фреймворк? — вы наблюдали как он конфиги грузит и какого они формата? грузит через автолоад? через композер? а кэширование некоторыми фреймворками yaml/xml файлов в php формат, подтягивается как-то иначе?
А то получается, как-то вы вместо того, чтобы рассматривать "современный" код, на который сами так делаете акцент, в.т.ч. указывая на "старые" библиотеки, — вы посмотрели только то, как "современный" код выглядит в вашем приложении, словно это такая вещь в себе, не содержащая исходников и никогда не ссылающаяся на код вне классов.


Речь идёт ведь и о том, что и относительный путь и абсолютный пройдут через real path cache — будь то autoload, будь то простой include/require — под капотом вы будете иметь разжёванный в реальный путь симлинк, который отстаёт от реального мира на X-сконфигурированное время. При чём тут тенденции и какая разница какой путь — я вообще не пойму...

Only those users with full accounts are able to leave comments.  , please.