RSS Assine nosso RSS

Posts com a Tag ‘zendframework’

04/12/2008 por andre.gustavo

Utilizando o Zend_Db_Select

Mais um post em paralelo com o blogdoxorna.com

O uso da classe Zend_Db_Select é muito simples, o intuito dela é proporcionar ao desenvolvedor a possibilidade de fazer consultas complexas sem a necessidade de escrever código SQL, e sim utilizando um objeto, abaixo estarei mostrando alguns mini-exemplos.

Consulta simples, como um SELECT * FROM `users`

$select = new Zend_Db_Select();

$select->from(‘users’);

$rs = $select->query();

$data = $rs->fetchAll();

Consulta com inserção de clausula WHERE, como um SELECT * FROM `users` WHERE `id` > 10:

$select = new Zend_Db_Select();

$select->from(‘users’);

$select->where(‘id > ?’, 10);

$rs = $select->query();

$data = $rs->fetchAll();

· Consulta com seleção de campos e cláusula WHERE, como um SELECT id, name FROM `users` WHERE id > 10:

$select = new Zend_Db_Select();

$select->from(‘users’);

$select->columns(‘id, name’);

$select->where(‘id > ?’, 10);

$rs = $select->query();

$data = $rs->fetchAll();

· Consulta com seleção de campos e cláusula WHERE e INNER JOIN, como um SELECT `users`.`id`, `users`.`name`, `pictures`.`address` FROM `users` INNER JOIN `pictures` ON `pictures`.`user_id` = `users`.`id` WHERE id > 10;

$select = new Zend_Db_Select();

$select->from(‘users’);

$select->columns(‘users.id, users.name, pictures.address’);

$select->joinInner(‘picures’, ‘picures.user_id = user.id’);

$select->where(‘id > ?’, 10);

$rs = $select->query();

$data = $rs->fetchAll();

Além dos métodos utilizados acima a api da classe na qual o Drimio_Db_Select extende em http://framework.zend.com/apidoc/core/Zend_Db/Select/Zend_Db_Select.html

27/11/2008 por andre.gustavo

Guardar Sessões em Cache com Zend Framework e Memcached

Post em paralelo com o www.blogdoxorna.com

O post de hoje se dedica a aumentar a performance no armazenamento e recuperação de sessões, mais um dos estudos realizados pela nossa equipe e que foi implantado no nosso projeto. Ele consiste em pega a sessão do usuário e armazenar em um servidor de cache, no nosso caso o memcached.

A implementação é muito simples, você terá apenas que criar uma classe e mudar o modo que cria sua sessão, o resto permanece igual, pois é Zend_Session se encarrega de achar a sessão dentro do cache. Abaixo vai o código da nova classe que deve implementar a interface  Zend_Session_SaveHandler_Interface.

class Xorna_SessionHandler implements Zend_Session_SaveHandler_Interface{

private $maxlifetime = 3600;

public $cache = '';	public function __construct($cacheHandler) {

$this->cache = $cacheHandler;

}

public function open($save_path, $name) {

return true;

}

public function close() {

return true;

}

public function read($id) {

if(!($data = $this->cache->load($id))) {

return '';

}

else {

return $data;

}

}

public function write($id, $sessionData) {

$this->cache->save($sessionData, $id, array(), $this->maxlifetime);

return true;

}

public function destroy($id) {

$this->cache->remove($id);

return true;

}

public function gc($notusedformemcache) {

return true;

}

}

?>

Bom, feito isso agora só precisamos instanciar isso, e criar a sessão:

Zend_Loader::loadClass('Xorna_SessionHandler');

$cache = Zend_Cache::factory('Core', 'Memcached', $frontendOptions, $backendOptions);

Zend_Session::setSaveHandler(new Xorna_SessionHandler($_cache));

Zend_Session::start();

Daqui em diante nada muda.

BlogBlogs.Com.Br