Архив

Архив раздела ‘PHP’

Ehcache в качестве RESTful сервера кеширования и PHP

logoПриветствую наших читателей. Сегодня мы снова продолжим исследования различных новых и не очень технологий, необычного их применения или просто оригинальных вещей. Те, кто уже давно читают наш блог, возможно вспомнят о короткой статье, в которой я рассказывал о интересном проекте распределённого кеша EHcache для платформы Java. Сегодня настало время продолжить эту тему, однако в другом ракурсе.

Читать далее...

Десктоп web-кодера: собираем рабочее место для AJAX и Web 2.0 кодера. Статья для журнала Хакер.

journalНиже авторский вариант статьи для журнала Xaкер, которая была опубликована в декабрьском номере журнала за 2008 год. Так как блог не так ограничен в объеме подачи материала, я предлагаю вам полную версию материала, в журнале опубликована насколько сокращенная и отредактированная версия, которую можно прочитать на сайте издания.

Введение

Между всеми этими взломами и хаками ты наверное не раз (а может и не два) задумывался над тем, чтобы самому напрограммировать какой-то из новомодных Web 2.0 стайтов. А то как же, жизнь идёт мимо нас, все делают проекты, а кое-кто даже на них зарабатывает неслабо (ага, ага, даже в условиях кризиса, кому кризис, а кому... ), так и мы не будем отставать от прогресса. Или во фриланс подадимся, там тоже сейчас (да и всегда) можно найти интересные заказы, если деньги нужны. А может ты на работу решил устроиться, и договорился с начальством, что будешь работать дома и на своём компьютере, в офисе появляясь только в день зарплаты и на дне рождения шефа? Неважно, главное - ты стёр все порно и решил превратить свой компьютер в рабочее место веб-разработчика! А мы тебе поможем выбрать нужные программы и утилиты, чтобы и работа была сделана, и напрягаться не надо было, и деньги на девчонок остались (это значит, все ПО по максимуму открытое и бесплатное).

Сначала давай уточним, что мы будем программировать, а вернее - на чем? Так как нацелились мы здесь на веб-разработку, то значит среда разработки должна поддерживать те языки и возможности, востребованные в веб-среде. Сразу скажем, что пока не будем рассматривать разработку на платформе Microsoft, ASP-страницы вероятнее всего придется писать, используя только продукты самой компании-разработчика (ага, и там даже бесплатные версии есть, Visual Studio Express), а об этом можно писать много (или ничего), поэтому мы пока обойдем вниманием продукцию MS. Читать далее...

ExtJS Tips&Hacks или броня для веб проекта — сплав Zend Framework, ExtJS и reCaptcha

logoПриветствуем наших читателей. Сегодня мы снова опишем небольшое решение для ExtJS, которое возникло в ходе нашей работы над новыми проектами (раскрою только, что это он-лайн браузерные игры). На этот раз мы используем не только сам ExtJS, но и дополнительные средства, в частности, серверный РНР фреймворк Zend Framework и сервис reCaptcha.

Если вы строите веб-приложение, вместо обычного сайта (хотя, что сейчас этот "обычный сайт"?), то скорее всего, вам понадобится защита от автоматических регистраций или хоть бы попыток обхода, ведь нам интересны  посетители и пользователи люди, верно? Для этого существует механизм CAPTCHA, а данном примере мы используем тест, генерируемый сервисом reCaptcha, который мы считаем на сегодняшний момент самым продвинутым и удобным. Хотя в дистрибутиве Zend Framework есть и собственная реализация, однако вариант от reCaptcha мне кажется более удобным, так как там есть и вариант аудио-каптчи. Читать далее...

AGPsource Session Server — первая бета-версия компонента из состава игровой платформы

3 февраля 2009 Comments off

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

Предпосылки к созданию

В случае разработки масштабных РНР-приложений и распределённых систем, перед программистами встает задача обеспечения корректной обработки пользовательских запросов, в случае, если приложение работает на нескольких серверах. Обычные РНР-приложения используют механизм сессий для хранения идентификационных данных и сессии задействованы при обработке каждого запроса от клиента. В обычном режиме сессии хранятся в файловой системе и, таким образом, доступны только на том же сервере, где запущено приложение. Если у нас стоит балансировщик нагрузки, он не может, в случае необходимости, перенаправить запросы на другой, свободный в этот момент сервер, так как для корректной обработки нам необходима сессия, а она хранится на том сервере, где пользователь начала работу. Для этого есть даже специальный термин, «Sticky session» - по сути, это стратегия работы балансировщика, который на основе сессионного идентификатора определяет, куда посылать все запросы. Читать далее...

AGPsource Game Platform — эксперименты с игровым движком, РНР <> JSON <> JDBC

logo3

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

И так, доступ к базе данных. Изначально мы имеем игру, которая написана на РНР, соответственно, если отбросить промежуточные библиотеки, используется либо mysqli или же PDO, который, в свою очередь, опирается теперь на новый драйвер Mysqlnd. К сожалению, на этом уровне внедрить какие-то более продвинутые методики работы с базой сложно.
Читать далее...

Исследование совместимости Zend Framework и Quercus PHP

28 декабря 2008 Comments off

caucho-whiteПриветствуем наших читателей. Нас уже почти-почти настиг праздник, так что, вероятно, это последняя запись блога в этом году, далее я буду только обновлять наш Twitter (а он стал очень даже популярным и читаемым каналом, там уже 45 читателей! Присоединяйтесь и вы!). А тема последнего поста будет снова таки оригинальной и исследовательской. Если помните, я давно уже заинтересовался объединением мира Java и PHP, в частности, при помощи замечательного продукта Quercus PHP - порта PHP-интерпретатора вместе с библиотеками на Java. И вот, очередной раз просматривая уже почти готовый архитектурный макет своего движка для браузерных онлайн игр, я обратил внимание на ускользнувшую от меня деталь. Ведь я собирался использовать популярный и мощный фреймворк Zend Framework, запуская его, конечно же, поверх QuercusPHP (детальнее про архитектуру движка я начну рассказывать после нового года). А он, как известно, достаточно требователен к различным расширениям и модулям - в одном проекте, что я сейчас делаю, используя только Zend_Search_Lucene, я встретился с необходимостью подключения ранее не используемых расширений. А значит вполне может быть ситуация, что эта платформа не будет поддерживать все необходимые функции для работы Zend Framework-а. Просмотр Google по поводу совместимости ничего определенного не дал, так что было решено посвятить пару часов собственному исследованию. Читать далее...

Архитектура SignalSlot для РНР веб-приложений на примере ezComponents

11 декабря 2008 11 комментариев

logo1Приветствуем наших читателей. Что-то занявшись глобальными задачами и разработкой, открою секрет, платформы для разработки и запуска онлайновых браузерных или клиентских (полу-клиентских, в смысле RIA) игр, я немного упустил из вида более простые и понятные, востребованные темы. На днях, читая рассылку по Zend Framework я заметил тему одного разработчика о реализации системы плагинов без модификации некоторого стандартного ядра.

Подобную задачу приходится решать достаточно часто и во многих случаях - например, вряд ли хоть какая-то CMS-система обходится без механизма плагинов. Конечно же, разработчики таких популярных CMS систем, как Drupal или WordPress уже решили для себя эту задачу, разработав собственную архитектуру подключения плагинов на лету без затрагивания функционала ядра. Однако аналогичная задача, мне кажется, все же из категории "вечных" и не все решения могут быть применены в каждом конкретном случае.

С аналогичными проблемами сталкиваются не только веб-разработчики, она актуальна и при проектировании компонентных десктопных приложений и сложных систем. И некоторые успешные решения вполне можно подсмотреть и позаимствовать с таких разработок. В данном случае я говорю об архитектуре Signal/Slot, которая реализована в библиотеке Qt (подробное описание) и применяется там для коммуникации между компонентами. Аналогичный функционал очень был бы полезен и в веб-разработках, в данном случае - в РНР проектах. Читать далее...

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 2

1 декабря 2008 3 комментария

Приветствуем наших читателей! Сегодня мы продолжаем исследовать тему такого класса ПО как очереди сообщений применительно к РНР веб-системам. В прошлой статье мы рассмотрели некоторое ПО, в частности представителей как самой верхней области (Apache Active MQ, возможности которого находятся на уровне уже корпоративного ПО), так и достаточно простые варианты, например, MQS. Но не рассмотренными остались еще несколько достаточно интересных проектов, так что наше исследование продолжается.
Читать далее...

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 1

Приветствуем наших читателей. К сожалению, очень много дел и проблем навалилось, поэтому частота обновление блога не такая, как хотелось бы, но это поправимо. Параллельно к основной работе, я в "фоне" обдумываю и прикидываю реализации архитектуры для игровых проектов (напомню, что основная область моих интересов и работ - создание онлайновых браузерных игр). Последнее время я все чаще и чаще возвращаюсь к мысли, что интересно было бы реализовать основной игровой сервер на основе очередей сообщений (MQ или Messages queue). То есть,  движок такой игры будет представлять собой набор компонентов, которые будут общаться между собой посредством асинхронных сообщений, а каждый компонент может быть как генератором сообщений, так и подписчиком, то есть исполнять другие сообщения.

Такой подход, насколько я понимаю, широко применяется в мире Java, там для этого есть стандарт Java Message Service (JMS) и применяются брокеры сообщений и на этом базируется архитектура  Enterprise service bus (ESB), например,  Apache ServiceMix. Но для нас это пока высокая сфера крупных проектов, а в специфике веба и веб-ориентированных приложений я бы хотел рассмотреть, можно ли что-то сделать подобное, но с меньшими затратами и обеспечить приложению отказоустойчивость, распределение нагрузки и асинхронную обработку. И конечно, очень желательно, чтобы это было реализовано на РНР как основном языке реализации всех компонентов сервера. Читать далее...

Caucho Resin — сервер приложений Java + PHP корпоративного уровня

5 сентября 2008 7 комментариев

Приветствуем наших читателей. Кстати, у нас произошло небольшое событие - да-да, именно у нас с вами. Если заметили, уже несколько дней счётчик Feedburner, при всех огрехах в работе сервиса за последние месяцы, показывает стабильно количество читателей больше 500. Это достаточно знаковая цифра для меня лично и, наверное, для отдельного блога узкотематической профессиональной направленности тоже. А достаточно скоро у нас будет первый день рождения, но пока ещё рано праздновать... нужно работать. И сегодня я расскажу вам о сервере приложений Caucho Resin.

Для приложений Java, я имею ввиду, веб-приложений, существует уже достаточное количество серверов, которые уже давно разрабатываются и давно вышли на уровень, достаточный для того, чтобы применять их в самых сложных и ответственных случаях. Думаю, всем известны  Apache Tomcat и Jetty - самые известные сервера из списка открытых разработок. Но к этому списку нужно добавить теперь еще и Resin. В ряде тестов его Pro версия превосходит в производительности Tomcat 6, обладая при этом рядом возможностей "из коробки", которых нет в других серверах или они реализуются при помощи сторонних средств. Читать далее...

Developers.org.ua