March 10th, 2010 Category: Optimizing Scalabillity Zend
4 Comments »
Revisando algunos problemas que tuve hoy con un servidor me volvi a plantear el uso de Zend Server.
Zend Server es un administrador para servidor de aplicaciones web siempre que trabajen con PHP. Este nos permite administrar extensiones, logs, extensiones. Ademas viene con Zend Optimizer+, Zend Data Cache, y Zend Debugger. Este producto de la gente de Zend nos promete manejar una mayor cantidad de usuarios, de datos y codigo.
Dentro de sus principales objetivos es la de proveer una herramienta para escalar y aumentar la performance de nuestro servidor.
En estas diapositivas, la gente de Zend hace una introduccion a Zend Server.
Tambien nos hablan de Performance y Escalabilidad.
Tambien nos brinda un servicio de Colas.
Aca nos muestran como hicieron para optimizar magento el software open source para crear tiendas online.
Instalacion en Debian.
$ sudo vim /etc/apt/source.list
agregamos la siguiente linea
#Zend Server Respository
deb http://repos.zend.com/zend-server/deb server non-free
Agregamos la clave publica del repositorio
$ wget http://repos.zend.com/deb/zend.key -O- | sudo apt-key add -
Actualizamos el repositorio
$ sudo aptitude update
Si queremos instalar php 5.2.x
$ sudo aptitude install zend-server-ce-php-5.2
Si queremos php 5.3.x
$ sudo aptitude install zend-server-ce-php-5.2
Cuando termine la instalacion podemos entrar en https://localhost:10082/ZendServer/ o http://localhost:10082/ZendServer/
Despues de completar el formulario de administracion, sino tuvimos ningun problema vamos a ver la siguiente pantalla.
Con estas diapositivas podemos ver un poco las virtudes de Zend Server un producto totalmente gratuito y facil de instalar. Si necesitan soporte tambien, pueden contratarlo, hay planes para todos los gustos.
November 19th, 2008 Category: Zend Framework
11 Comments »
![]()
El concepto de cachear contenido es simple. Cada vez que generamos una pagina con contenido dinamicamente con PHP, lo que hacemos desde el lado del servidor es procesar los .php, estos generalmente tienen cierta logica, para generar el contenido que vamos a mostrar, como buscar en la base datos, llamar algun webservice, y depende el sistema mas o menos cosas. Con Zend_Cache nos evitamos de estos pasos.
Lo que hacemos con Zend_Cache, es generar el html(xml, json, etc) final, y almacenarlo en el file system. De esta manera cada vez que hagamos llamen a nuestra web vamos a llamar a nuestro html final, y no volver a generar el html que generamos en peticiones anteriores. Esto sirve para web donde el contenido no cambia constantemente.
Por ejemplo si tuvieramos un diario, como www.clarin.com.ar donde acceden millones de personas mensualmente, pero sabemos que el unico momento donde se cambia la portada es cuando aparece una nueva nota, aunque las paginas internas siguen siendo las mismas.
Para este caso es ideal algo como Zend_Cache, podemos Cachear toda portada, y cada una de las paginas internas, si desde la administracion se carga una nueva nota, se borra el cache anterior y se genera uno nuevo muy facilmente.
Pero hasta ahora solo vimos la teoria.
Manos a la obra
Lo primero que tenemos que hacer antes de cachear nuestras paginas es configurar como queremos que funcione Zend_Cache. En este ejemplo le vamos a dar un tiempo de vida determinado, vamos a indicarle donde queremos que almacene las paginas cacheadas, y vamos a decirle que actions y vistas queremos que cachee. Este codigo podemos ponerlo en nuestro bootstrap.
7200,
'debug_header' => true, // for debugging
'regexps' => array(
// cache the whole IndexController
'^/$' => array('cache' => true),
// cache the whole IndexController
'^/index' => array('cache' => true),
'^/home' => array('cache' => true),
// we don't cache the ArticleController...
// we don't cache the ArticleController...
'^/news' => array('cache' => true),
// we don't cache the ArticleController...
// ... but we cache the "view" action of this ArticleController
'^/news/list/view' => array(
'cache' => true
)
),
'default_options' => array(
'make_id_with_post_variables' => true,
'make_id_with_cookie_variables' => true,
'cache_with_cookie_variables' => true
)
);
$backendOptions = array(
'cache_dir' => '/tmp/zend_cache'
);
// getting a Zend_Cache_Frontend_Page object
$cache = Zend_Cache::factory('Page',
'File',
$frontendOptions,
$backendOptions);
$cache->start();
?>
En este ejemplo estamos cacheando los controller news, home, index. Ademas le indicamos que el directorio para los files es /tmp/zend_cache (hay que crearlo!!)
Los tiempos que se reducen dependen de la cantidad de datos que busquemos en la base de datos, webservice, o que dependa de cierta logica.
Para un blog, o un portal con muchos hits diarios esto es indispensable al menos que tengamos hardware de sobra. En este blog yo uso WP-Cache de Ricardo Galli que hace lo mismo que Zend_Cache.



