Должен ли я включить локально или удаленно? - PullRequest
0 голосов
/ 26 апреля 2010

Просто что-то, что меня интересует, когда включаю файлы:

Скажем, я хочу включить файл или ссылку на него. Должен ли я просто для примера:

include("../localfile.php");

или я должен вместо этого использовать

include("http://sameserver.com/but/adirect/linkto/localfile.php");

Один лучше другого? Или более безопасный? Или это просто личные предпочтения?

Ясно, что было бы необходимо, если бы у вас был файл, который вы бы включили в файлы в нескольких каталогах, и этот файл содержал другой файл, или есть какой-то другой способ сделать это?

Ответы [ 6 ]

5 голосов
/ 26 апреля 2010

Чтение файла на намного быстрее, чем выполнение HTTP-запроса и получение ответа. Никогда include(a_uri), если вы можете помочь.

Используйте $_SERVER['DOCUMENT_ROOT'], если вы хотите рассчитать полный путь к файлу для вашего включения.

1 голос
/ 26 апреля 2010

В дополнение к тому, что говорят другие люди, эти вызовы будут иметь другие результаты, так как при вызове удаления будет выполняться php output , а не содержимое файла. Если только вы не остановите php от обработки файла, в этом случае вы выставляете свой код миру, что также не обязательно то, что вы на самом деле хотите.

1 голос
/ 26 апреля 2010

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

 define('BASE_DIR',  '/path/to/root/');

Затем используйте BASE_DIR во всех ваших путевых ссылках. Когда пришло время переместить ваш сайт, просто измените это определение на новый путь (который должен быть просто / в этой точке).

1 голос
/ 26 апреля 2010

Как уже было сказано, обязательно включите локальный файл и не выполняйте HTTP-запрос (который занимает больше времени, не кэшируется, а содержимое технически доступно для просмотра всему миру, если он знает, где его искать).
Еще одна небольшая деталь: если вы используете полные пути к включенным файлам, это будет даже быстрее, чем относительные пути, особенно если вы используете какой-то кэш байт-кода.

1 голос
/ 26 апреля 2010

Обязательно включите локальный файл, потому что скрипт php на самом деле не знает и не заботится о том, что вы включаете скрипт на локальном сервере, поэтому путь URL-адреса вызывает запрос http, а задержка сети от запросов http в значительной степени узкое место для рендеринга любой html-страницы в общем, чем меньше их у вас, тем лучше вы будете.

Лично я стараюсь избегать использования include и require в целом, в пользу require_once, потому что использование require_once означает, что вы пишете свой код повторно, а не код, который выполняется сразу после включения Это. Извлеките определения классов, извлеките библиотеки функций, но старайтесь избегать кода, который выполняется сразу же после его включения, потому что это затруднит его повторное использование.

0 голосов
/ 26 апреля 2010

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

...