PHP включает в себя и память - PullRequest
3 голосов
/ 24 июля 2011

Надеюсь, это не совсем глупый вопрос.Я довольно долго искал ответ, но не могу найти (или распознать) точный ответ.

Я понимаю, что функции в PHP не анализируются до фактического запуска.Поэтому, если у меня большой класс со многими функциями, только для одной из которых требуется большой включаемый файл, я буду потенциально экономить память, если я включу только «включаемый файл» в функцию (в отличие от верхней части файла класса).)?

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

Большое спасибо,

Роб

Ответы [ 3 ]

2 голосов
/ 24 июля 2011

Мне нравится эта поговорка: «Сделай так, чтобы она работала, а затем, если нужно, сделай это быстро».Кто-то хороший программист?

В большинстве случаев вам лучше сосредоточиться на хорошей структуре ООП и дизайне приложений, чем на скорости.Если на вашем сервере используется что-то вроде Zend Optimizer, все ваши методы в одном файле не будут иметь никакого значения, поскольку все они предварительно скомпилированы и сохранены в памяти (это сложнее, чем это, но вы понимаете)

Вы также можете загрузить все ваши включаемые файлы при запуске apache.Затем все функции загружаются в память.Вы не захотите делать это во время разработки, если не хотите перезапускать Apache каждый раз, когда вносите изменения в код.Но когда это делается на производственных серверах, это может иметь огромное значение.И если вы действительно хотите ускорить процесс, вы можете написать код на C ++ и загрузить его как модуль для Apache.

Но в конце концов ... вам действительно нужна эта скорость?

1 голос
/ 24 июля 2011

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

Если функция находится внутри класса, она называется методом, и расширение ее класса может зависеть от ее класса.

Просто некоторые вещи, которые нужно учитывать. Всегда включайте минимум.

0 голосов
/ 24 июля 2011

Не экономьте память в таких случаях, если она вам действительно не нужна, экономьте время на разработку. Память обычно дешевая, но время разработки / поддержки не таково. Используйте php opcode cacher, например eAccelerator или APC , это увеличит скорость выполнения, поскольку все файлы будут предварительно скомпилированы и сохранены в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...