Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
1

Сайт на одном php файле или в нескольких?

13.09.2014, 19:23. Просмотров 1490. Ответов 20
Метки нет (Все метки)

Доброго времени суток.
Используя различные GET параметры, по сути, я могу создать целый сайт в одном php файле, каждый раз выводя только то, что мне нужно (разбить все по условиям if). Это имеет некое удобство, но насколько это рационально и влияет ли на сервер и скорость обработки?
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2014, 19:23
Ответы с готовыми решениями:

Где можно скачать простейший скрипт чата в одном файле на PHP?
Где можно скачать простейший скрипт чата в одном файле на PHP?

Вредоносный код php в картинках или как обезопасить сайт
Здравствуйте друзья. Начну с того, что очень серьезно отношусь к безопасности...

Отправка нескольких файлов в одном инпуте
Добрый день, Есть форма отправки нескольких файлов в ОДНОМ инпуте <form...

POST в одном файле
Можно ли сделать проверки POSTов с разных страниц в одном файле?

Php+html!? Как в php файле вывести input type='button' через echo!?
ну собственно говоря я все спросил в заголовке...

20
Jewbacabra
Эксперт PHP
3498 / 2908 / 1301
Регистрация: 24.04.2014
Сообщений: 8,855
13.09.2014, 20:55 2
сомневаюсь что это будет удобно. Со временем файл станет достаточно большим, и ориентироваться в нем будет достаточно сложно.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16753 / 6644 / 864
Регистрация: 12.06.2012
Сообщений: 19,897
Завершенные тесты: 1
13.09.2014, 20:59 3
Люди не просто так разрабатывают разделение кода на части, то же MVC и иже с ними. Конечно, лучше разделять
0
superpuper
102 / 102 / 48
Регистрация: 09.09.2010
Сообщений: 239
14.09.2014, 04:06 4
Золотая Середина.
+ Да, время на поиск и загрузку множества файлов сэкономится, но.
- В грамотно написанном приложении для обработки конкретного запроса грузится и парсится только то, что нужно. Мне кажется, что чаще всего это 10 - 30% от всего объёма кода/классов/файлов. А в 1 файле парситься будет весь код при любом запросе. Время + память на ветер.
Мой вывод : в 1 файле - только очень маленькие приложения.
0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
14.09.2014, 04:18 5
Вставлю и я свои пять копеек. PHP при каждом запросе парсит и компилирует все используемые в обработчике запроса PHP-файлы. Если весь проект будет в одном файле, то при каждом запросе он весь будет обрабатываться транслятором, т.е. компилироваться будет вообще все, даже тот код, который никаким боком не участвует в обработке данного конкретного запроса. Зачем создавать лишнюю нагрузку на сервер?
0
OnYourLips
506 / 356 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
14.09.2014, 12:31 6
В одном файле, когда сайт занимает 200-600 строк. Потом разделять на файлы.
0
Tatikoma
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
258 / 222 / 109
Регистрация: 07.07.2014
Сообщений: 965
14.09.2014, 19:22 7
Сколько всяких забавных глупостей написано в теме.. =)

Цитата Сообщение от OnYourLips Посмотреть сообщение
В одном файле, когда сайт занимает 200-600 строк. Потом разделять на файлы.
Опишите пожалуйста подробнее, в чем преимущество сначала писать все в одном файле, а только потом начинать разделять? - Фактически придется писать сайт дважды.

Цитата Сообщение от quwy Посмотреть сообщение
PHP при каждом запросе парсит и компилирует все используемые в обработчике запроса PHP-файлы.
Не совсем так, или даже точнее сказать совсем не так. PHP только парсит, он не компилирует. Результатом парсинга являются опкоды которые транслируются в машинный код непосредственно в момент исполнения.
Кроме того важен момент, что он делает это не перед исполнением запроса, как можно подумать из вашего комментария, а по-необходимости - только когда выполнение скрипта дойдет до директивы include - только тогда парсер пхп полезет разбираться, что там валяется в подключаемом файле.

Цитата Сообщение от quwy Посмотреть сообщение
Если весь проект будет в одном файле, то при каждом запросе он весь будет обрабатываться транслятором, т.е. компилироваться будет вообще все, даже тот код, который никаким боком не участвует в обработке данного конкретного запроса.
Это утверждение верно лишь при отсутствии расширений для кэша опкодов (xcache, apc, eaccelerator).

Цитата Сообщение от quwy Посмотреть сообщение
Зачем создавать лишнюю нагрузку на сервер?
Нагрузка - понятие крайне растяжимое. Обычно выделяют как минимум четыре вектора нагрузки:
1. Нагрузка на процессор
2. Использование оперативной памяти
3. Нагрузка на сеть
4. Нагрузка на IO

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

---------------------

Писать код, совершенно очевидно на мой взгляд, - следует в разных файлах, которые подключаются по необходимости. Промышленную версию - всегда можно просто собрать в один файл и соответствующим образом настроить исполнение php на сервере, для получения выгоды от оптимизации.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16753 / 6644 / 864
Регистрация: 12.06.2012
Сообщений: 19,897
Завершенные тесты: 1
14.09.2014, 19:28 8
Цитата Сообщение от Tatikoma Посмотреть сообщение
Опишите пожалуйста подробнее, в чем преимущество сначала писать все в одном файле, а только потом начинать разделять?
Подразумеваю, что имелось в виду то, что если сайт меньше 200-600 строк, то можно писать и в одном файле, больше - однозначно разделять..
0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
15.09.2014, 12:37 9
Цитата Сообщение от Tatikoma Посмотреть сообщение
Результатом парсинга являются опкоды которые транслируются в машинный код непосредственно в момент исполнения.
Это называется компиляцией. И насчет трансляции непосредственно в машинный код -- крайне сомнительно. Виртуальная машина там.

Цитата Сообщение от Tatikoma Посмотреть сообщение
только когда выполнение скрипта дойдет до директивы include
Перечитайте тему обсуждения. Какой include, если весь код в одном файле?

Цитата Сообщение от Tatikoma Посмотреть сообщение
Это утверждение верно лишь при отсутствии расширений для кэша опкодов (xcache, apc, eaccelerator).
Они входят в стандартную поставку PHP? Нет?
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16753 / 6644 / 864
Регистрация: 12.06.2012
Сообщений: 19,897
Завершенные тесты: 1
15.09.2014, 12:51 10
Цитата Сообщение от quwy Посмотреть сообщение
Это называется компиляцией
PHP больше интерпретируемый ЯП, а не компилируемый. Сначала код транслируется в байт-код, а затем этот байт-код выполняется.

Добавлено через 1 минуту
Хотя есть и всякие расширения на подобие HipHop, которые переводят код в плюсовый..

Добавлено через 11 секунд
Хотя есть и всякие расширения на подобие HipHop, которые переводят код в плюсовый..
0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
15.09.2014, 12:56 11
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP больше интерпретируемый ЯП, а не компилируемый. Сначала код транслируется в байт-код, а затем этот байт-код выполняется.
Трансляция исходного кода в бинарный байт-код является компиляцией. И совершенно по боку, является этот байт-код кодом IA-32, ARM, JRE или еще чем-то.

Не нужно придираться к словам, компиляция в x86 и трансляция в код виртуальной машины -- это один и тот же процесс, который стОит всегда одинаково.
0
Tatikoma
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
258 / 222 / 109
Регистрация: 07.07.2014
Сообщений: 965
15.09.2014, 22:46 12
quwy, компиляция и интерпретация - разные вещи. Погуглите. Грань тонка, но она есть. Вы совершенно зря всё IT-сообщество считаете дураками, раз они разделяют эти термины.
0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
16.09.2014, 02:56 13
Tatikoma, компиляция -- это преобразование кода из одной форму в другую. Интерпретация в данном контексте -- выполнение кода. Это два независимых процесса, и интерпретатор выполняет оба действия. Интерпретаторы, которые работают непосредственно с исходным текстом, -- давно достояние истории. Я никого не считаю дураками, но за свою трудовую карьеру я написал с пяток компиляторов и к ним столько же виртуальных машин, поэтому прекрасно знаю о чем говорю .
0
Tatikoma
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
258 / 222 / 109
Регистрация: 07.07.2014
Сообщений: 965
16.09.2014, 12:00 14
quwy, когда в C++ появится функция eval, - тогда PHP станет компилятором в общепринятом значении этого слова.

>> за свою трудовую карьеру я написал с пяток компиляторов и к ним столько же виртуальных машин
А зачем?
0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
16.09.2014, 12:40 15
Цитата Сообщение от Tatikoma Посмотреть сообщение
когда в C++ появится функция eval, - тогда PHP станет компилятором в общепринятом значении этого слова.
Значит, еще раз, чтобы донести свою позицию, выдвину несколько тезисов.

Типичный компилятор делает одно действие:
1. Преобразует исходник в исполняемый код процессора и сохраняет его.

Типичный интерпретатор делает два действия:
1. Преобразует исходник в исполняемый код виртуальной машины и сохраняет его в памяти.
2. Запускает полученное при помощи виртуальной машины.

Есть конечно еще и классические интерпретаторы, работающие на уровне исходного текста без компиляции его в байт-код. Но на сегодня это практически исключительно командные процессоры типа CMD или BASH. Все остальное выполняется только после преобразования в бинарный вид.

При этом существуют интерпретаторы, которые преобразуют исходник непосредственно в исполняемый код процессора и сразу же запускают его прямо на процессоре, без всяких виртуальных машин (современные движки JavaScript). Также существуют и компиляторы, которые преобразуют исходник в исполняемый код виртуального процессора, и запускается он потом в виртуальной машине (старые или урезанные версии Java).

И теперь скажите мне, почему вы считаете, что операция №1 должна как-то по-разному называться в случае интерпретатора и компилятора, если она и там и там выполняет не просто похожие, а зачастую совершенно идентичные действия?

Цитата Сообщение от Tatikoma Посмотреть сообщение
А зачем?
В основном внутренние скриптовые языки сложных корпоративных приложений (типа 1С).
0
Tatikoma
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
258 / 222 / 109
Регистрация: 07.07.2014
Сообщений: 965
16.09.2014, 12:58 16
Цитата Сообщение от quwy Посмотреть сообщение
И теперь скажите мне, почему вы считаете, что операция №1 должна как-то по-разному называться в случае интерпретатора и компилятора, если она и там и там выполняет не просто похожие, а зачастую совершенно идентичные действия?
В случае интерпретатора это называется трансляцией, в случае компилятора - компиляцией.

Разница в том, что результатом трансляции - является код низкого исполняемый интерпретатором, а компиляции - код низкого уровня исполняемый процессором.

Не по теме:

Цитата Сообщение от quwy Посмотреть сообщение
В основном внутренние скриптовые языки сложных корпоративных приложений (типа 1С).
Чем не устроили готовые скриптовые движки? - Почему нельзя было написать один раз скриптовый движок и использовать его все 5 раз?

0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
16.09.2014, 13:50 17
Цитата Сообщение от Tatikoma Посмотреть сообщение
В случае интерпретатора это называется трансляцией, в случае компилятора - компиляцией.
Зачем двумя разными словами называть один и тот же процесс?

Разница в том, что результатом трансляции - является код низкого исполняемый интерпретатором, а компиляции - код низкого уровня исполняемый процессором.
Я привел два примера, опровергающих этот тезис.

Цитата Сообщение от Tatikoma Посмотреть сообщение
Чем не устроили готовые скриптовые движки?
Возможностями. Например, нужен был синтаксис прямого встраивания SQL в код скрипта. Который из готовых движков это умеет?

Цитата Сообщение от Tatikoma Посмотреть сообщение
Почему нельзя было написать один раз скриптовый движок и использовать его все 5 раз?
Потому что разные проекты и разные заказчики предъявляют разные требования.
0
Tatikoma
16.09.2014, 14:02
  #18

Не по теме:

Цитата Сообщение от quwy Посмотреть сообщение
Возможностями. Например, нужен был синтаксис прямого встраивания SQL в код скрипта. Который из готовых движков это умеет?
Не очень понятно, что вы имеете в виду под "прямое встраивание SQL в код скрипта". PHP, Perl, Node.js - все вроде умеют?

Цитата Сообщение от quwy Посмотреть сообщение
Зачем двумя разными словами называть один и тот же процесс?
Этот вопрос плохо подходит для этой дискуссии. Таким вопросам место в рамках отдельных топиков или даже публикаций, в частности в коллективных IT-блогах.

Цитата Сообщение от quwy Посмотреть сообщение
Разница в том, что результатом трансляции - является код низкого исполняемый интерпретатором, а компиляции - код низкого уровня исполняемый процессором.
Я привел два примера, опровергающих этот тезис.
Это не меняет того, что результатом трансляции - является код низкого исполняемый интерпретатором, а компиляции - код низкого уровня исполняемый процессором.

0
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
16.09.2014, 14:30 19
Цитата Сообщение от Tatikoma Посмотреть сообщение
Не очень понятно, что вы имеете в виду под "прямое встраивание SQL в код скрипта". PHP, Perl, Node.js - все вроде умеют?
Нужен был PL/SQL-подобный синтаксис, когда SQL-выражения являются частью синтаксиса, а не строками, передаваемыми в функции:
Код
for i in (select * from table1) do
  insert into table2(field1, field2) values(i.field1, i.field2);
end;
Да и было это за много лет до этих ваших Нод.жс

Цитата Сообщение от Tatikoma Посмотреть сообщение
Этот вопрос плохо подходит для этой дискуссии. Таким вопросам место в рамках отдельных топиков или даже публикаций, в частности в коллективных IT-блогах.
Так а я разве против? Хорошо бы, чтоб модератор разделил тему и перенес наши философствования в соответствующий раздел.

Цитата Сообщение от Tatikoma Посмотреть сообщение
Это не меняет того, что результатом трансляции - является код низкого исполняемый интерпретатором, а компиляции - код низкого уровня исполняемый процессором.
Т.е. по вашей терминологии движок JavaScript стал компилятором, а Java -- интерпретатором? Хорошо, а как же вы тогда назовете "инструмент разработки" для PalmOS 5, который на выходе давал код реального процессора M68K, но на девайсе этот код выполнялся в виртуальной машине поверх ARM?

Разница между этими двумя категориями не в природе бинарного кода, а в том, что интерпретатор не разделяет компиляцию и выполнение, в то время как компилятор только компилирует, а выполняемость результата в данном окружении его вообще не волнует (кросс-компиляция как пример). А если точнее, то интерпретаторов в том смысле, в котором их описывают старые учебники, фактически не существует уже. Есть компиляторы и среды выполнения, которые иногда объединены в один исполняемый модуль, иногда разделены, а иногда среды выполнения просто нет как таковой.
0
OnYourLips
506 / 356 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
18.09.2014, 08:54 20
Цитата Сообщение от Tatikoma Посмотреть сообщение
Разница в том, что результатом трансляции - является код низкого исполняемый интерпретатором, а компиляции - код низкого уровня исполняемый процессором.
Не надо больше такие глупости говорить, почитай определения. Хотя бы на википедии.
Любая компиляция всегда является трансляцией.

PHP - интерпретатор, в составе которого есть компилятор для внутренних нужд. И наружу этот компилятор не смотрит
1
18.09.2014, 08:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2014, 08:54

Выполнение php скрипта и html в одном файле
Добрый день! Имеется страничка, обычная html вёрстка, к ней подключен php...

Лучше много функций в одном файле или по одной в разных файлах?
Доброго времени суток. Создаю свой сайт с нуля, уже есть 9 довольно больших...

Посоветуйте учебник php или сайт по решению задач
Учебник php или сайт по решению задач по php, чтобы было понятно на примерах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru