Como criar uma pasta com o PHP

Mais uma vez estava implementando melhorias para a melhor loja nerd da internet e resolvi compartilhar um tutorial básico!

Como criar pasta com PHP?

Estou usando o Code Igniter e fui implementar melhorias no upload de fotos do Eu Compraria, para isso precisava criar diretórios específicos para cada produto.

Para criar uma pasta com o PHP você precisa:

  • PHP instalado (doooh…)
  • Permissão de escrita no pasta onde você vai escrever

O comando é simples, quase o mesmo utilizado em terminal:

mkdir ("/var/www/dominio/media/imagens/eu-compraria-shop", 0755 );

O primeiro parâmetro da função mkdir do PHP é o caminho da pasta que você vai criar, o segundo parâmetro é o código CHMOD de permissões para a pasta que você vai criar, a permissão tem que estar em modo octal (começando com 0).

Fácil, não? 🙂

Utilizando memcache no CodeIgniter

Recentemente passei o And After da versão 1.7 para a versão 2.0.2 do CodeIgniter (CI),  e fiquei feliz com as facilidades do driver de cache na nova versão, recomendo a atualização do framework!

Nas versões anteriores só existia (nativamente) o cache de "output" no CI, isso significa que eu só podia cachear uma "saída" para aquela url (por método de um controller). A performance fica voando, porém isso engessava um pouco o cache, não podia fazer verificações de usuário logado, personalização, executar scripts, etc. Se já existia um cache para determinado controller ele era usado e ponto, não podia contar views, verificar data, exibir informações de acordo com o usuário, etc.

Com o novo driver de cache ficou muito mais fácil, você pode optar entre os seguintes tipos de cache:

  • Dummy – Utilizado apenas para não dar erro em ambiente de desenvolvimento, ele não cacheia nada.
  • File – Cache de arquivo, fica armazenado em /application/cache
  • Memcache – cache de memória utilizando um servidor memcached
  • APC  – Cache APC do PHP

Utilizando o memcache no CodeIgniter

O memcache é um cache de memória, e precisa de um servidor de cache. O primeiro passo é instalar o memcache.

Com o servidor instalado e configurado, você precisa configurar sua aplicação no CodeIgniter para o uso do cache, vamos lá!

Carregando o Driver de cache

A primeira coisa que você precisa é o Driver de Cache carregado:

$this->load->driver('cache');

Com isso você já pode usar os métodos de cache que o driver suporta.

Salvando um objeto de cache

O driver de cache funciona com chave->valor, para salvar um objeto é simples, o método save é chamado com 3 parâmetros nesta ordem:

  1. Chave do objeto
  2. Valor do objeto
  3. "Time to live", tempo em segundos que o cache deve permanecer salvo.

Para salvar o objeto "site" com valor "O Desenvolvedor" por 2 minutos temos o seguinte:

$this->cache->memcached->save('site', 'O Desenvolvedor', 120);

Recuperando um objeto de cache

O método get retorna o valor do objeto se ele existir e false se não existir o objeto em cache:

$site = $this->cache->get('site');

O retorno "false" permite verificação se um objeto existe, por exemplo:

if($this->cache->get('site')){
   //faz alguma coisa pois o cache existe
}else{
   //Faz uma consulta no banco e salva ela no cache
   $this->cache->memcached->save('site', 'O Desenvolvedor', 120);
}

Apagando um objeto do cache

Função delete, bastante intuitiva, só passa como parâmetro a chave do objeto a ser excluído:

$this->cache->delete('site');

 

Com essas informações tudo o que você precisa para melhorar a performance da sua aplicação é um pouco de criatividade e testes, testes e testes. No And After fiz diversos testes, optei pelo uso de file cache para os posts.

Em alguns casos de posts com centenas de comentários o ganho de performance foi muito grande, no post de cartão de visita por exemplo a performance de back-end ficou mais de 10 vezes mais rápida para entrega dos objetos. Agora estou trabalhando no cache do O Desenvolvedor e do Eu Compraria! Shop.

A melhoria de performance e redução de gasto com servidor valem qualquer tempo investido no estudo e aplicação do cache!

Sugestões, críticas e melhorias nos comentários! 🙂

Referências

Como instalar o nodeJs no Ubuntu

Estou a algum tempo estudando e desenvolvendo algumas coisas com Node.js aqui no iG, resolvi compartilhar com vocês a configuração e instalação dos pacotes do Node no Ubuntu.

Instalando o NodeJS com git

Agora o NodeJS tem um pacote para instalação via apt-get, então não é necessário realizar o processo por Git (mas ainda funciona).

Para instalar o último pacote que está no git, você precisará de alguns pacotes. Se eles não estiverem instalados instale:

sudo apt-get install g++ curl libssl-dev apache2-utils
sudo apt-get install git-core

Agora vamos fazer o clone do Node para instalação:

git clone git://github.com/ry/node.git
cd node
./configure
make
sudo make install

Instalando o NodeJS com o gerenciador de pacote Ubuntu

Agora o NodeJS tem um pacote no Ubuntu, então não é necessário fazer o processo anterior (baixar o pacote do Git e instalar), o processo ficou mais simples:

sudo apt-get install nodejs node

Atenção: se você precisa de alguma versão específica do Node, precisa instalar através do processo de pegar do repositório.

Com isso o node vai ser instalado no seu Ubuntu, você pode verificar a instalação digitando:

node --version

 

Instalando o NPM

O NPM é um gerenciador de pacotes para o Node, sua instalação é bastante simples:

curl http://npmjs.org/install.sh | sh

E para instalar um pacote com o npm você só precisa digitar no terminal "npm nome_do_pacote install", no exemplo abaixo irei instalar o express:

npm install express

Para fazer seu nodejs funcionar com o MongoDB estou usando o Mongoose, a instação também é com o npm:

 

npm install mongoose

Pronto, agora você tem o NodeJS rodando, dúvidas e sugestões nos comentários! 🙂

Configurando o PHP para exibir erros

Por questões de segurança normalmente servidores configuram o php.ini para inibir a exibição de erros (se um usuário consegue identificar um erro e tem informações sobre ele fica mais fácil explorar o problema).

Configurando pelo php.ini

No php.ini você deve ter uma chave display_errors, que provavelmente está asssim:

display_errors = Off

Para configurar pelo php.ini é só trocar o valor Off por On e todas as páginas em PHP no servidor irão printar os erros – não faça isso em produção, pelo motivo de segurança que citei acima.

 

Configurando pelo código

Considero esta a melhor opção, manter sempre o php.ini configurado para não exibir erros e configurar isso em cada aplicação em que for necessário, pois alterar o php.ini modifica o funcionamento de todos os projetos que estiverem no servidor.

Na última versão do Code Igniter (2.0) ele vem com uma variável de configuração para definir em qual ambiente o projeto está rodando: dev, homologação, produção, e isso define se os erros serão ou não exibidos.

Para configurar no código a exibição de erros e log de erros, adicione o bloco abaixo no teu código:

ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);

E não se esqueça de omitir os erros quando a aplicação for para ambiente de produção! 🙂

Slides – Introdução ao PHP

Param quem está pensando em começar a aprender PHP o slide abaixo pode ser uma boa ajuda, outra dica é ler as referências no Manual do PHP.

Também recomendo este outro slide sobre segurança em PHP, que é uma questão que deve receber atenção de qualquer desenvolvedor.