Acompanhamento de Progresso no cURL com PHP

Utilizo com certa frequencia o cURL em meus projetos e adoro ele por conta de todas as possibilidades que ele nos dá, principalmente com o envio de cabeçalhos. Mas uma novidade para mim foi descobrir que era possível o acompanhamento de progresso no cURL com PHP.

Achei isso simplesmente fantástico! Estava com um problema em que uma aplicação não conseguia fazer o download de arquivos muito grandes, mas como saber onde era o problema? Procurando na internet toda encontrei callback do cURL para PHP que nos avisa a toda vez que um pedaço do arquivo é baixado ou subido. Continue lendo

PHP Curl Timeout e ConnectTimeout

Encontrei um problema no usando o php curl timeout . Problema relativamente leve no meu código. Utilizando o cURL para fazer o download de arquivos em um dos meus projetos me deparei com o cancelamento do download. Debugando inicialmente pensei que o arquivo que estava baixando estivesse corrompido, mas não estava, conferi todas as fontes e elas estavam perfeitas.
Segundo achei que fosse o tempo de execução do PHP, mas reparei que estava usando ele em CLI, logo não teria esse problema.
Terceiro alguma merendagem minha na configuração do cURL, esse dentre os dois primeiros tinha altas chances de ser a correta, ou a incorreta. Depende da interpretação. Esse era mesmo o problema, mas como ter certeza disso? Debugando!

Observando o código que eu tinha que está abaixo, é possível ver que ele é um código simples que qualquer tutorial de php cURL na internet te ensina a montar. Continue lendo

thiagosantos.com-413-Request-Entity-Too-Large

NGINX 413 Request Entity Too Large Error

Me deparei com uma "merendagem" na configuração do NGINX (nginx 413 request entity too large). Tentava enviar um arquivo encodado na base64 para um servidor recém inaugurado quando encontrei dificuldades para enviar alguns arquivos.  De inicio imaginei que pudesse ser um problema na origem, do servidor que estava enviando, debugando descobri que o CURL estava dando timeout por conta do enorme tamanho do arquivo e da pequena banda larga, resolvido neste post.

Depois de resolver esse problema, o arquivo continuava a não subir, até que analisando o log de retorno vi a linda mensagem: 413 Request Entity Too Large Error and Solution Continue lendo

Problemas com a quantidade de itens no carrinho

Trabalhando junto com um cliente fizemos a atualização da versão do seu Magento da 1.7 para a 1.9. Fora um ou outro pequeno contratempo podemos dizer que a atualização correu de forma limpa. No entanto, eis que nos deparamos com um problema, que até então eu nunca tinha visto, a quantidade de itens no carrinho de nenhum produto era atualizado!

Toda a atualização correu bem e apesar de todos os testes que fizemos essa passou em branco. Acontece que desde a versão 1.8 do Magento ele trás um mecanismo de proteção contra CSRF em alguns formulários. Logo se você tem o Magento e o seu tema utiliza uma página de carrinho própria ( cart.phtml ) e você está enfrentando o mesmo problema com a quantidade de itens que não são atualizadas no carrinho você pode seguir os seguintes passos: Continue lendo

Diferenças entre aspas duplas (“) e simples (‘) no PHP

Nós desenvolvedores em geral trabalhamos muito com string usando aspas, na verdade o dia todo trabalhamos fazendo conversões, concatenação, trabalhando com strings vindas do banco de dados relacional, de um XML, de diversas fontes de dados. Na maioria das linguagens " e ' tem um comportamento similar, determinam o inicio e o fim de uma string. Resolvi então escrever esse post para não me deixar esquecer das diferenças entre aspas no PHP.

No PHP as aspas duplas (") e a aspas simples (') assim como outras linguagens também definem uma string, mas há diferenças entre elas. As strings de formadas por aspas duplas são dinâmicas, ou seja o seu conteúdo é alterado conforme o valor de uma variável dentro do contexto, caso tenha uma variável é claro. Enquanto as aspas simples são estáticas e não fornecem mecanismos para a variação do seu conteúdo mesmo que tenha uma variável definida nela. Exemplos. Continue lendo

Alterar a quantidade minima de compra de todos os produtos

Me deparei outro dia com a necessidade de alterar a quantidade minima para a compra de produtos no Magento. Por padrão na página de exibição do produto há um campo de texto onde você adiciona quantos itens você quer daquele produto o valor minimo inicial por padrão é 0. Mas e se eu quiser que o minimo seja 1, 5 ou mesmo N ? Há duas formas de controlar essa quantidade minima. Continue lendo

Parte 1 – “echo print var_dump print_r”

Para inicio de conversa, vamos ao básico: "cuspir informação na tela". Nesse post serão mostrados com exemplos as principais "funções" que utilizo para a impressão de informação na tela, e qual delas podem ser úteis no debug.

echo e print

Aos apressados, rápido exemplo de utilização.

  1. <?php
  2.  
  3. echo "Olá Thiago";
  4. echo 'Olá Thiago';
  5. echo ("Olá Thiago");
  6. echo "Olá ", "Thiago";
  7. echo ("Olá", "Thiago");
  8. print "Olá Thiago";
  9. print ("Olá Thiago");
  10. //a saída para os "echos" e os print serão
  11. //Olá Thiago;
  12.  
  13. ?>

O uso do echo tem um comportamento diferenciado e requer certa atenção. O echo não é uma função do PHP e sim um construtor da linguagem. Por conta dessa característica o echo dispensa o uso de parênteses. Logo é possível usá-lo passando uma string diretamente (linhas 3, 4 e 5). Para saber mais sobre os construtores da linguagem PHP de uma olhada nesse link.

Continue lendo

identificador_cadeia_ou_numero_esperado

Javascript – IE – Identificador, cadeia ou número esperado

Se você estiver trabalhando com Javascript e se deparar com essa mensagem de erro enquanto debuga o seu código saiba que a solução é simples!

Quando você faz uma lista baseado em um objeto literal é comum esquecermos uma virgula no final, como segue o exemplo abaixo, os navegadores de verdade ignoram o último elemento enquanto o IE 7 fica aguarda por uma outra propriedade que não existe, por isso ocorre a mensagem de erro. Reparem ao final do valor 4000 da propriedade auto, há uma virgula!

Para resolver isso basta tirar a virgula depois da última propriedade.

  1. jQuery(".class_nivoslider_videos").simplecarousel({
  2. width:296,
  3. height:194,
  4. visible: 1,
  5. auto: 4000,
  6. });

 

adicionar_produtos_magento

Adicionar um ou multiplos produtos com apenas um link no Magento

Cria-se uma forma diante da necessidade, ou simplesmente descobre que essa forma já existe. Diferente do que há pela internet aqui eu compartilho uma forma realmente muito fácil de adicionar diversos produtos simples ao mesmo tempo via query string.

Usando o metodo ADD do próprio checkout/cart, passando os IDs do produto. Criei abaixo uma lista com quatro produtos fictícios apenas para mostrar com exemplos como a coisa funciona.

ID - 5584 - DVD UFC 2093
ID - 5506 - CD Thiago Santos Sertanejo Caipira Ao Vivo
ID - 5376 - Livro Minha Praia é o Shell
ID - 5247 - e-Book Alo alo Marcianos! Continue lendo

mysql_innodb_error_pthread_create_returned_11

MySQL fora do ar com InnoDB: Error: pthread_create returned 11

Hoje pela manhã recebi algumas notificações, do Magento, dizendo que ele não conseguia se conectar ao MySQL. Como é de praxe, e sempre que acontece isso eu reinicio o MySQL no MK01 e tudo volta ao normal.

Dessa vez, não foi assim. O MySQL estava falhando a cada tentativa minha de iniciar ele, o log abaixo, do arquivo /var/log/syslog, é o da primeira tentativa de reiniciar o MySQL:

Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29 [Note] /usr/sbin/mysqld: Normal shutdown
Jun  4 09:48:29 mk01 mysqld:
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29 [Note] Event Scheduler: Purging the queue. 0 events
Jun  4 09:48:29 mk01 mysqld: 130604  9:48:29  InnoDB: Starting shutdown...
Jun  4 09:48:29 mk01 mysqld_safe: Starting mysqld daemon with databases from /var/lib/mysql Continue lendo