RSS Feed
Окт 6

Memcached + Doctrine + Zend Framework

Posted on Вторник, октября 6, 2009 in Doctrine, php, ZendFramework, Новости

Совмещаем все это вместе, получаем неплохое ускорение работы доктрины.

Ставим memcached

Как Установить Memcached на windows?

  1. качаем отсюда бинарник http://code.jellycan.com/memcached/
  2. ложим в c:\memcached (или другой путь)
  3. из консоли инсталим как сервис c:\memcached\memcached.exe -d install

Установка под *nix ищется на ура в гугли.

bootstrap

(привожу весь код инитера доктрины)

    /*
     * Init Doctrine
     */
 
    protected function _initDoctrine()
    {
    	$config=$this->getOption('database');
 
    	require_once 'Doctrine.php';
        $autoloader = Zend_Loader_Autoloader::getInstance();
        $autoloader->registerNamespace('Doctrine');
 
        try {
		Doctrine_Manager::connection("mysql://".$config['params']['username'].":".$config['params']['password']."@".$config['params']['host']."/".$config['params']['dbname'])->setCharset($config['charset']);
        } catch (Exception $e) {
    		echo 'FATAL ERROR: MySql is down'; exit;
	}
 
	Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_AGGRESSIVE);
	Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_USE_NATIVE_ENUM, true);
	Doctrine::loadModels(APPLICATION_ROOT . "/models");
 
	// Install Tables
        Doctrine::createTablesFromModels(APPLICATION_ROOT . "/models");
 
	// Cache
	$configCache=$this->getOption('cache');
 
	    // Clearer --------------------------------------------------------
	    $memcache_obj = new Memcache;
		$con=$memcache_obj->connect($configCache['host'], $configCache['port']);
		if ($con==FALSE) { echo 'FATAL ERROR: MemCache is down'; exit; }
 
		//$memcache_obj->flush(); // отчистка кеша
 // ---------------------------------------------------------------
 
	    $servers = array(
		    'host' => $configCache['host'],
		    'port' => $configCache['port'],
    		'persistent' => true
             );
 
	$cacheDriver = new Doctrine_Cache_Memcache(array(
	        'servers' => $servers,
	       	'compression' => false
	    )
	);
 
	Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_QUERY_CACHE, $cacheDriver);
	Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_QUERY_CACHE_LIFESPAN, 3600);
	Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_RESULT_CACHE, $cacheDriver);
	Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_RESULT_CACHE_LIFESPAN, 3600);
    }

Все проинииализили и сказали Doctrine что нужно использовать memcache при запросах и выдачи результата

Если у вас в проекте есть Zend_Translate то подцепляем и его:

$configCache=$this->getOption('cache');
 
$backendOptions=array(
		'host' => $configCache['host'],
		'port' => $configCache['port'],
		'persistent' => true
);
$cache = Zend_Cache::factory('Core',
		'Memcached',
		$frontendOptions,
		$backendOptions);
 
Zend_Translate::setCache($cache);

везде используются данные из конфига (ini) вот кусок:

; cache memcached
cache.host	=	localhost
cache.port	=	11211

Запросы

1. После тестов, прямые запросы (DQL) выполняются намного шустрей, т.е.:

$q = Doctrine_Query::create()
->select('id, url')
->from('NewsCategories');
 
$newsCategories= $q->execute()->toKeyValueArray("id","url");

Намного шустрей чем удобное

$newsCategories=Doctrine::getTable("NewsCategories")->findAll()->toKeyValueArray("id","url");

и плюс, в последнем запросе нельзя указывать что нужно использовать кеш (!!!)

теперь все свои запросы приводим в вид «юзай кеш»

$q = Doctrine_Query::create()
->select('id, url')
->from('NewsCategories')
->useCache();
 
$newsCategories= $q->execute()->toKeyValueArray("id","url");

все =)

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 126

Июн 29

Удаление дубликатов в MySQL

Posted on Понедельник, июня 29, 2009 in php

Все банально =)

DELETE t1 FROM userlogins t1, userlogins t2 WHERE t1.login=t2.login AND t1.ID != t2.ID

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 50

Июн 8

Zend Server CE установка и настройка для Windows (Windows Zend Server Community Edition)

Posted on Понедельник, июня 8, 2009 in php, ZendFramework, Новости

Установка Zend Server CE

Рассмотрим процедуру установки и настройки сборки Zend Server CE для Windows, напомню я уже делал обзор Zend Server.

И так, мы хотим установить себе Zend Server CE (далее по тексту ZS).

Первое что нам нужно сделать, это скачать последную версию с сайта:

http://www.zend.com/products/server/downloads-all


Там выбираем пакет для Windows, на момент написания это был файл:
zs1

Скачиваем…

Теперь перейдем к настройке и установке

  1. Запускаем скачанный файл
  2. Установка доступна в 3-х вариантах: Typical, Full and Custom
    Custom
    - вы сможете сами выбрать что поставить, а что нет =) (ВЫБИРАЕМ ЭТОТ ПУНКТ)
  3. Ставим галочки напротив нужных вещей
    zs2zs3
  4. Перейдете в диалог Destination Location где нужно выбрать КУДА ставить сервер, я советую выбирать путь такой c:\zs\ (описание будет данно для этого пути)
    zs4
  5. Порт apache выбираем 80
  6. В итоге будет поставлено:
    - 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
  7. Жмем Install. Будет загруженно дополнительно phpmyadmin (почему то 2.11.9.3 – я обычно потом ставлю ветку 3.x) и mysql сервер.

Настройка Zend Server CE

Заходим в панель управления:
http://localhost/ZendServer/

zs5

Вводим свой пароль, входим. Там можете поиграть с 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 (предварительно туда его желательно залить -) )

Собственно это все.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 1 718

Мар 30

Debug Bar для Zend Framework

Posted on Понедельник, марта 30, 2009 in php, ZendFramework, Новости

2009-scienta_debugbar

Сначала подобная штука появилась в Symfony, потом сделали для Kohana и CodeIgniter и теперь сделали для Zend Framework.

Читаем как установить и настроить по адресу: http://jokke.dk/software/scientadebugbar

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 38

Мар 15

Советы по оптимизации работы с MySQL

Posted on Воскресенье, марта 15, 2009 in php, Новости

На mysql.com появилась отличная статья по оптимизации работы с MySQL, линка: http://forge.mysql.com/wiki/Top10SQLPerformanceTips

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 15

Фев 20

Zend Server beta 1

Posted on Пятница, февраля 20, 2009 in php, Новости

zend-server-event-detailsСегодня Zend выпустил новый продукт, Zend Server beta1 ! Если кратко, то это «подобие» xampp, denwer и т.д. но от самой Zend.

В данный продукт включены следующие компненты:

  • Apache 2.2.8
  • PHP 5.2.8
  • Zend Framework 1.7.4
  • PHP optimizer и кучу других продуктов Zend
  • Админский интерфейс для быстрой настройки и работы.

Продукт доступен для windows, linux и macOS в двух редакциях:

  1. Zend Server – после beta он будет выпушен как отдельный коммерческий продукт и будет платным
  2. Zend Server CE – бесплатный сервер для разработчиков (он не станет платным)

Для получения информации о продукте, перейдите по ссылке.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 4

Янв 11

MySQL хранимые процедуры

Posted on Воскресенье, января 11, 2009 in Новости

Хранимые процедуры появились начиная с 5 версии MySQL. Они позволяют автоматизировать сложные процессы на уровне MySQL, нежели использовать для этого внешние скрипты. Это даёт нам наиболее высокую скорость выполнения, т.к. мы не гоняем большое количество запросов, а всего лишь один раз вызываем ту или иную процедуру (или функцию).

Читать дальше: http://blog.kovshenin.com/archives/mysql-stored-procedures

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Уникальных посетителей темы: 56