Zend Server CE установка и настройка для Windows (Windows Zend Server Community Edition)
Установка Zend Server CE
Рассмотрим процедуру установки и настройки сборки Zend Server CE для Windows, напомню я уже делал обзор Zend Server.
И так, мы хотим установить себе Zend Server CE (далее по тексту ZS).
Первое что нам нужно сделать, это скачать последную версию с сайта:
http://www.zend.com/products/server/downloads-all
Там выбираем пакет для Windows, на момент написания это был файл:
![]()
Скачиваем…
Теперь перейдем к настройке и установке
- Запускаем скачанный файл
- Установка доступна в 3-х вариантах: Typical, Full and Custom
Custom - вы сможете сами выбрать что поставить, а что нет =) (ВЫБИРАЕМ ЭТОТ ПУНКТ) - Ставим галочки напротив нужных вещей


- Перейдете в диалог Destination Location где нужно выбрать КУДА ставить сервер, я советую выбирать путь такой c:\zs\ (описание будет данно для этого пути)

- Порт apache выбираем 80
- В итоге будет поставлено:
- PHP 5.2.9 -- Common Extensions -- Additional Extensions -- Zend Optimizer+ -- Zend Debugger -- Zend Data Cache - Zend Framework 1.8.2 -- Zend Framework Base - phpMyAdmin - MySQL Server - Apache Web Server on port 80
- Жмем Install. Будет загруженно дополнительно phpmyadmin (почему то 2.11.9.3 – я обычно потом ставлю ветку 3.x) и mysql сервер.
Настройка Zend Server CE
Заходим в панель управления:
http://localhost/ZendServer/

Вводим свой пароль, входим. Там можете поиграть с GUI =)
Но мы пойдем дальше…
Первое что я меняю, так это делаю vhosts т.к. все таки мы не один сайт разрабатываем, а много, для этого делаем изменения:
1. У меня все сайты лежать в папке c:/www
2. Создаем файл c:/www/vhosts.conf в нем пишем наши сайты:
NameVirtualHost *:80
<VirtualHost 127.0.0.1>
ServerAdmin mail@mail.com
DocumentRoot «C:\www\phpmyadmin»
ServerName 127.0.0.1
ServerAlias www.phpmyadmin
</VirtualHost>
<VirtualHost 127.0.0.2>
ServerAdmin mail@mail.com
DocumentRoot «C:\www\site1″
ServerName 127.0.0.2
ServerAlias www.site1
</VirtualHost>
и т.д., меняем айпи и папку где лежит сайт.
3. Меняем конфиг апача c:/zs/Apache2/conf/httpd.conf
Добавим строку в конце:
Include c:/www/vhosts.conf
Строки:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
переделываем на
<Directory />
# Options FollowSymLinks
# AllowOverride None
# Order deny,allow
# Deny from all
</Directory>
4. Запустим апач, если все запустилось, то при открытии http://127.0.0.1 у нас будет phpMyAdmin (предварительно туда его желательно залить -) )
Собственно это все.
Уникальных посетителей темы: 1 718Zend Server 4.0.3 & Zend Studio 7.0 Early Access Release
Вышли обновления для таких вещей как Zend Server до версии 4.0.3.
Основное это переход на PHP 5.3 (RC2).
Скачать Zend Server можно по ссылке:
http://www.zend.com/en/products/server/downloads-ea
Теперь более глобальное обновление Zend Studio до версии 7.0 !!!!
- Zend Studio базируется на последней версии Eclipse (Galileo).
- Поддержка PHP 5.3 (Namespace)
- Улучшение редактора кода
- Поддержка интеграции Zend Server
Теперь Zend Studio еще больше интегриновать с Zend Framework:
- Легкое создание любых элементов Zend Framework
- Настраиваемый дефолтный проект
- Обновленные примеры работы
- Интеграция Zend Tool
Скачать Zend Studio 7.0 и потестить можете по ссылке:
http://www.zend.com/en/products/studio/studio-7-early-access
Уникальных посетителей темы: 30Обновления Zend Framework 1.8.1 и Doctrine 1.1.1
Обновляемся на новые версии фреймворка и doctrine.
Zend Framework качаем тут:
http://framework.zend.com/download/latest
обзор прошлой версии смотрим тут
http://devzone.zend.com/article/4524-Zend-Framework-1.8.0-Released
В данной версии исправленно более 68 ошибок в коде, ошибки в документации и «Быстром старте». Так же сделанны изменения (без перевода)
- Zend_Loader::registerAutoload() now proxies to Zend_Loader_Autoloader, and marks the instance as a fallback autoloader. This will ensure equivalent functionality, and reduces the number of deprecation notices emitted to one.
- Many bugfixes and improvements to Zend_Application.
- Addition of module generation capabilities to Zend_Tool
- Addition of strong object typing capabilities to Zend_Amf
- Many more manual translations!
Полный список тут: http://short.ie/zf1-8-1-issues
Doctrine
Качаем как обычно с http://www.doctrine-project.org/download
Уникальных посетителей темы: 19Doctrine Profiler
Иногда полезно видеть какие запросы строит Doctrine и сколько времени они выполняются. Описание профайлера в оригинале тут: http://www.doctrine-project.org/documentation/manual/1_1/en/component-overview#profiler
Ниже мой пример.
1. В Initializer.php
public function initDb() { ... $profiler = new Doctrine_Connection_Profiler (); Doctrine_Manager::getInstance()->setListener($profiler); Zend_Registry::set('dbProfiler', $profiler); ...
2. В bootstrap.php
... //В конце файла $profiler=Zend_Registry::get('dbProfiler'); echo "<div class=box style=\"font-family: Courier New; font-size: 11px\">"; $time = 0; foreach ( $profiler as $event ) { $time += $event -> getElapsedSecs (); echo "<b><font color=red>".$event ->getName () . "</font></b> [" . sprintf ("%f", $event -> getElapsedSecs ()) . "]<br>\n"; echo $event ->getQuery () . "<br>\n"; $params = $event ->getParams (); if( ! empty ( $params )) { var_dump ( $params ); echo "<br>"; } } echo "<br><b>Total time : " . $time . "</b><br>\n"; echo "</div>"; ...
В итоге при каждом генерировании страницы, внизу, мы увидем профайл doctrine, к примеру вот так:
query [0.001810] SELECT l.id AS l__id, l.date AS l__date, l.username AS l__username, l.ip AS l__ip, l.text AS l__text, l.created_at AS l__created_at, l.updated_at AS l__updated_at FROM logs l ORDER BY l.date DESC LIMIT 20 prepare [0.000102] SELECT u.id AS u__id, u.status AS u__status, u.role AS u__role, u.username AS u__username, u.password AS u__password, u.email AS u__email, u.im AS u__im, u.lastlogin AS u__lastlogin, u.ballance AS u__ballance, u.created_at AS u__created_at, u.updated_at AS u__updated_at FROM users u WHERE u.id = ? LIMIT 1 execute [0.002061] SELECT u.id AS u__id, u.status AS u__status, u.role AS u__role, u.username AS u__username, u.password AS u__password, u.email AS u__email, u.im AS u__im, u.lastlogin AS u__lastlogin, u.ballance AS u__ballance, u.created_at AS u__created_at, u.updated_at AS u__updated_at FROM users u WHERE u.id = ? LIMIT 1 array(1) { [0]=> string(1) "1" } fetch [0.000094] SELECT u.id AS u__id, u.status AS u__status, u.role AS u__role, u.username AS u__username, u.password AS u__password, u.email AS u__email, u.im AS u__im, u.lastlogin AS u__lastlogin, u.ballance AS u__ballance, u.created_at AS u__created_at, u.updated_at AS u__updated_at FROM users u WHERE u.id = ? LIMIT 1 fetch [0.000075] SELECT u.id AS u__id, u.status AS u__status, u.role AS u__role, u.username AS u__username, u.password AS u__password, u.email AS u__email, u.im AS u__im, u.lastlogin AS u__lastlogin, u.ballance AS u__ballance, u.created_at AS u__created_at, u.updated_at AS u__updated_at FROM users u WHERE u.id = ? LIMIT 1 Total time : 0.00414180755615
Уникальных посетителей темы: 50Doctrine Pagination – Постраничная разбивка средствами Doctrine
В ZendFramework конечно есть модуль Pagination, но после его использования я решил поглядеть а что есть у Doctrine и нужно сказать что у нее это ЕСТЬ и реализованно неплохо!
Оригинальное описание находится тут: http://www.doctrine-project.org/documentation/manual/1_0/en/utilities#pagination
Пример использования:
1. В контроллере пишем:
$currentPage=$this->_getParam("pager"); // Номер страницы из роутера $resultsPerPage=20; // Cколько результатор на одной странице $pager_layout = new Doctrine_Pager_Layout ( new Doctrine_Pager ( Doctrine_Query :: create () ->from ( "Users u" ) ->orderBy ( "id DESC" ), $currentPage , $resultsPerPage ), new Doctrine_Pager_Range_Sliding ( array ( "chunk" => 5 )), "/admin/users/index/{%page_number}" ); $pager_layout ->setTemplate ('<a href="{%url}" class="pager">{%page}</a> '); $pager_layout ->setSelectedTemplate ('<b class="pager">{%page}</b> '); $pager = $pager_layout ->getPager (); $users = $pager->execute(); $this->view->pager = "Page: ".$pager_layout ->display('',true)." Total items: <b>".$pager->getNumResults()."</b>";
2. В роутере пропишем:
$router->addRoute('amdinUsers', new Zend_Controller_Router_Route('admin/users/index/:pager', array('module' => 'admin', 'controller' => 'users', 'action' => 'index', 'pager' => '1') ));
3. В виеве соответственно ловим:
<div class="pager_box"><?php echo $this->pager ?></div>
Уникальных посетителей темы: 142Zend Paginator Helper – для тех кто парится (Zend_Paginator)
upd: Смотрите новую статью: Doctrine Pagination – Постраничная разбивка средствами Doctrine
Разбирал Zend_Paginator, вроде все гуд, но вот захотелось мне что бы было что то типа такого вывода нумерации страниц:
Ан нету пока в ZF этого, порыл инет, нашел замечательный хелпер Zend Framework Pagination Helper.
Позволяет сделать пагинаторы следующих видов: Classic style, Digg style, Extended style, PunBB style.
Выглядит это так:
Для того что бы использовать данный хелпер, качаем его из svn:
svn checkout http://svn2.assembla.com/svn/ZendPaginationHelper .
И в контроллере:
$this->view->addHelperPath('notech/view/helper', 'Notech_View_Helper'); $this->view->pagination_config = array( 'total_items'=>100, 'items_per_page'=>25, 'style'=>'digg');
И в виеве:
echo $this->pagination($this->pagination_config)->create_links();
Удачи =)
п.с. нашел тут:
http://www.assembla.com/wiki/show/ZendPaginationHelper
Уникальных посетителей темы: 435