Мало кто задумывается, что программирование любого веб-проекта на PHP - по сути такое же параллельное программирование, как если бы вы делали это в более низкоуровневых языках, таких как "C" или "Erlang". Когда на ваш сайт идёт поток траффика, на нём в один и тот же момент времени параллельно и одновременно отрабатывают множество экземпляров ваших PHP-скриптов. А значит между ними могут возникнуть классические эффекты "ожидания и опережения", когда нужно предусматривать строгую последовательность выполнения данных.

В то же время, любой достаточно длинный алгоритм требует больше ресурсов, а так же более сложен в отладке и в тестировании. Когда вы в сложном проекте программируете длинную цепочку (или большой набор) взаимосвязанных действий, вы закладываете самому себе фундамент для головной боли при отладке на конечных этапах проекта. Чем больше вы связываете функции между собой, тем более вы нарушаете принцип инкапсуляции - одной из четырёх основ правильного программирования. И сложная логика грозит вырасти в клубок связанных действий, который придётся распутывать каждый раз заново.

Поэтому при разработке сложного проекта крайне важно с самого начала использовать так называемую событийную (events) модель, когда ряд действий не связывается непосредственно между собой и не выстраивается в длинные цепочки. Каждая функция живёт, развивается и тестируется независимо. А когда вам нужно сделать два действия последовательно, то первое из них должно подать сигнал, а второе - услышать его и сделать свою часть работы. И так далее.

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

Событийная модель UMI.CMS
Стандартные точки вызова событий

Вы будете удивлены тем, как много событий в Юми можно "мониторить" и добавлять свои действия, совершенно не влезая в исходный код и не нарушая его целостности. Удачной вам работы!

Читайте также:

Категории

Теги

обзоры маркетинг developer программинг менеджмент xslt технологии документация шаблоны Служба Заботы партнеры мероприятия маркетинг веб студии москва UMI события лицензии новинки UMI Edu UMI Cloud продукты UMI модуль Кейсы UMISummit business облако тегов кастомы uwdc Челябинск разработчики конференция Конкурс UMIRU exchange 28 Обмен данными 1C Интеграция с 1С версии UMICMS хостинг юмихост umihost UMICMS рейтинг MySQL разделение баз данных tpl local scope macro кейсы итоги года SAPE seo мероприятие рынок веб разработки экономика Алексей Самойлов Сергей Котырев KINETICA CMS Сибирская интернетнеделя видео UMIWorkshop интернетмагазин интернет-магазин интернет магазин интернет-маркетинг flash actionscript каталог анимация техподдержка Золотой сайт umi_workshop акция стратегия партнерская_программа партнерство highload РуПромо Машков версия 2_7 кэширование скорость стихи день рождения статьи пресс конференция версия 2_5 Edit_in_Place онлайн платежи кризис достижения CeBIT внедрения umi cms блоги верстка релиз EditInPlace изучение Юми создание модуля модули ReMIX UMI_CMS_Net iPhone XML драйвер как убрать лампочку форма обратной связи языковые версии CMS Pistols музыка UMICMS 28 удобство юзабилити usability user experience интерфейсы CMS Eye tracking ай тракинг usability test UXRussia управление сайтом RIW Russian internet week Softool выставки интернет клиенты сайты umisound cms pistols РИФ 2011 Tagline качество 2012 UMISound Полюса Илья Разин Марат Машков

Авторы блога