A Drimio estará presente no PHPSC Conf 2.0, um dos maiores eventos de PHP do Brasil.
As incrições já estão abertas. O evento acontecerá em Itajaí nos dias 29,30 e 31 de Maio.
Participe!
A Drimio estará presente no PHPSC Conf 2.0, um dos maiores eventos de PHP do Brasil.
As incrições já estão abertas. O evento acontecerá em Itajaí nos dias 29,30 e 31 de Maio.
Participe!
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
Mais um post em paralelo com o blogdoxorna.com
Um recurso muito interessante do navegador Firefox são suas extensões, e para os desenvolvedores web uma das extensões mais importantes é o Firebug, com ele você consegue fazer o profiling da camada de visão da sua aplicação, podendo por exemplo monitorar todas as requisições Ajax, seus cabeçalhos e dados, tempo de carregamento de cada arquivo da interface e o tamanho de cada um. Mas ele não para por aí, utilizando o FirePHP que é uma extensão do Firefox mas ele trabalha sobre Firebug, você consegue fazer profiling das camadas que são processadas no servidor, como a camada de modelo, que é o caso utilizado neste post. Abaixo estarei mostrando de maneira simples e objetiva como utilizar este recurso, assumindo que você já tenha instalado o Firefox, o Firebug e o FirePHP, então vamos lá:
No seu arquivo de bootstrap, após criar a sua conexão com o banco de dados, você deverá criar um profile e defini-lo como o profiler daquelas conexão:
$connection = Zend_Db::factory($adapter, $config);
$profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
$profiler->setEnabled(true);
$connection->setProfiler($profiler);
Após isso, basta ter o firebug e o firephp ativados para conferir o profiling de suas consultas no console do firebug.
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.
Material da palestra apresentada no ConaPHP 2008