28.14. Не объединяйте длинные строки
Обычной практикой программирования в PHP является конкатенация длинных последовательностей данных без особой надобности перед их печатью. Сравните листинги 28.9 и 28.10. Конкатенация subject и contents должна произойти до того, как сценарий вызовет функцию print, и если строка contents достаточно длинная, это может занять много времени. В листинге 28.10 вызов функции print происходит несколько раз, а PHP никогда не объединит subject и contents в памяти, что сохранит ценное время. Заметим, что, так как сам по себе вызов функции print характеризуется определенными накладными расходами, не всегда следует разбивать операцию конкатенации в отдельные операторы print. В определенных случаях это также приводит к тому, что код плохо читается. По этой причине лучше следовать такой практике только при отображении длинных строк.
| Листинг 28.9. Конкатенация длинных строк_
<?php
$subject = "какая-то тема";
$contents = "... очень большой отрывок текста..."; print("Subject: $subjectnn$contents");
?>
I Листинг 28.10. Способ избежать объединения длинных строк
<?php
$subject = " какая- то тема";
$contents = "... очень большой отрывок текста..."; print("Subject: $subjectnn"); print($contents);
?>
28.15. Не обрабатывайте большие файлы с помощью Web-сервера Apache
Скорее это совет не по программированию, а по установке сервера. Если ваш Web-узел обслуживает загрузку больших файлов, может быть уместным для их обслуживания настроить специальный сервер, вместо того чтобы обрабатывать их с помощью Web-сервера Apache с активизированным PHP. Существует несколько причин поступить именно таким образом.
Загрузка больших файлов требует много времени. Число параллельных процессов, которые использует Web-сервер Apache, обычно невелико. Процессы Web-сервера Apache, обслуживающие загрузку, становятся на время загрузки недоступными. Это уменьшает число параллельных пользователей, которые может обработать ваш Web-сервер. Процессы Web-сервера Apache потребляют относительно большие объемы памяти для каждого процесса, особенно если Apache работает с активизированным PHP. Даже если повышение максимального количества параллельных процессов Web-сервера не является обязательным, будут расходоваться зря большие объемы памяти.
Отличным решением для установки в качестве сервера загрузки является дросселирующий Web-сервер thttpd <http://www.acme.com/software/thttpd/>. Он очень "легкий" и не создает нагрузки на сервер, что делает его одним из наиболее подходящих Web-серверов для обслуживания большого количества такого статического содержимого, каким являются загружаемые файлы.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Эффективность и отладка. Часть Триннадцатая.
17-07-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Эффективность и отладка. Часть Двеннадцатая. | PHP. Эффективность и отладка. Часть Четырнадцатая. |