‘PHP Extensions “0” must be loaded.’: Como arrumar no Magento

Um problema comum na instalação do Magento, é o erro: “PHP Extensions “0” must be loaded.

Este erro é uma pequena falha de compatibilidade do Magento e o PHP 5.4. Mas não precisa se preocupar, apesar de incomodar bastante, este problema é bem simples de resolver.

Abra o arquivo app/code/core/Mage/Install/etc/config.xml e localize as seguinte informação:

<extensions>
 <pdo_mysql />
</extensions>

Altere essa informação para:

<extensions>
 <pdo_mysql>1</pdo_mysql>
</extensions>

Com essa alteração você pode continuar a instalação sem problemas. Guarde bem essa informação, talvez você precise muito dela cada vez que realizar uma instalação do Magento.

Hospedagem de Imagens: Onde colocar elas?

Uma dúvida hoje, com o aumento na produção de imagens digitais, é onde hospedar elas com qualidade, custo e facilidade.

Com certeza, a melhor hospedagem de imagens que existe hoje é o serviço chamado S3 da AWS Amazon. Lá, você poderá hospedar um número imenso de imagens, usando CDN, e com um custo baixissimo.

Amazon S3

A Amazon cobra apenas $0.0408 por GB hospedado. Imagina, isso é praticamente nada para você hospedar imagens. Esse valor é ainda cobrado por demanda. Ou seja, se caso precisar delar os arquivos, automaticamente o seu custo irá baixar.

Porque você não vai lá conferir como funciona o serviço? Acesse agora aws.amazon.com e conheça todos os serviços da Amazon.

Outras serviços para hospedagem de imagens são:

ignore_user_abort – Script PHP assíncrono

Hoje vamos falar de script PHP assíncrono usando ignore_user_abort!

Algumas vezes precisamos fazer alguns scripts que irão rodar em background. Um exemplo seria, o envio em massa de emails.

Porém, esse processo pode ser um pouco lento, e o ideal é não deixar o usuário esperando o retorno do sistema, após concluir o envio de 1.000, 2.000 ou seja lá o tamanho da base de e-mails.

Diferença entre Script e Compilado

O PHP é uma linguagem desenvolvida em scripts. Ou seja, a cada requisição, todas as instruções são lidas e executadas, em forma de script.

No caso de um site ou sistema web, a cada transação, mudança de página ou requisição, o PHP encerra a execução do script, mesmo sendo um ajax.

Usando a função ignore_user_abort

Para contornar esse detalhe do PHP, existe a função nativa do PHP ignore_user_abort.

Ela poderá receber um parâmetro booleano, não obrigatório, caso o parâmetro não for informado, retornará a situação atual da função.

Para o funcionamento da função, ela deve ser chamada no início do script PHP. A função torna a execução do script assíncrono, ou seja, ele irá executar as informações enquanto o servidor php estiver online.

ignore_user_abort(1); // Execute o script em background, de forma continua
set_time_limit(0); // executando de timeout o script, use com cuidado...
$interval = 60 * 15; //O intervalo que o script terá para executar, a cada 15 minutos
do{
// add the script that has to be ran every 15 minutes here
// ...
sleep($interval); // wait 15 minutes
}while(true);

Referência: php.net

short_open_tag no PHP, evitando erros

Olá Pessoas!

Como meu primeiro post aqui, quero falar sobre Short Tags!

Como todos devem saber as Short Tags estão em DEPRECATED no PHP 5.3.x.

A diretiva (short_open_tag) estão lá no php.ini, mas setadas como Off!

Caso precise trabalhar num projeto que utilize-as, há duas opções:

  1. Ativar a diretiva (short_open_tag=On), e reiniciar o apache. (Não recomendado, pois alguns servidores compartilhados: a) Já estão atualizando a versão do PHP; b) Nem todos os servidores tem a possibilidade de colocar um php.ini na raiz do site e pronto, tá rodando; c) Mesmo pedindo para ativarem, podem negar, pois como se trata de uma hospedagem compartilhada, não se sabe qual o impacto nos outros sites).
  2. Varrer arquivos do projeto pesquisando pelas short tags (<?) e substituindo pela tag padrão (<?php).

Para essa segunda opção deve ser feita a pesquisa utilizando a seguinte expressão regular <\?(?!php)(\s|\n|\t) e substituir por <?php.

Mas tome cuidado, tem também a shot tag para echo (<?=), cujo recomendo rodar antes, substituindo pelo padrão (<?php echo).

Outra dica que dou é não automatize a substituição, rode a pesquisa sem substituir e veja se realmente é necessário fazer a substituição!

http_build_query no PHP para queries

A função http_build_query irá gerar um string de consulta (query) com os dados informados no array de entrada da função.

Exemplo de http_build_query:

$arrQuery = array(
	'Titulo'	=> 'Dicas de PHP',
	'ProdutoID' => '1',
	'Sexo'		=> 'M',
	'DataNascimento' => '06/01/1990',
);

$strQuery = http_build_query( $arrQuery );

echo $strQuery; // Titulo=Dicas+de+PHP&ProdutoID=1&Sexo=M&DataNascimento=06%2F01%2F1990

A função pode ser muito útil para transição de dados com cURL no PHP. Quando existe a necessidade de transpor dados de um array, $_GET, $_POST ou object para outro servidor ou aplicação.

Tenha muito cuidado com algumas informações mais extensas utilizando http_build_query, pois a função pode acabar criando encode das informações e você ter dificuldades para recebe-lá e outra parte do script/projeto.

Para entender toda estrutura e variações da função, acessem a documentação do PHP: http://www.php.net/manual/pt_BR/function.http-build-query.php