Coisas que aprendi ao importar 50 mil artigos para o WordPress

Nota do Editor: E se, um dia, um conhecido vos pedisse para lidar com a importação, todos os dias, de 50 mil entidades encaminhando-as para artigos numa instalação WordPress?  O mais certo é que tivessem de coçar a cabeça em busca de uma solução. Foi o que aconteceu a Luís Rodrigues. As primeiras tentativas não foram bem sucedidas. Até que… Mas o melhor é ser o próprio Luís Rodrigues a contar a história.

Recentemente, tive a oportunidade de desenvolver um plugin para um cliente que, todos os dias, obtém um ficheiro com cerca de 50 mil entidades, e insere-as ou actualiza-as como artigos, numa instalação WordPress.

A tarefa seria relativamente trivial para um baixo número de entidades, mas como tudo o que é desproporcionado em software, as coisas depressa se tornam estranhas. De timeouts a erros por falta de memória, há muito a esperar de um desafio destes.

Eis algumas das coisas que aprendi.

A tempo e horas

O WP Cron é o mecanismo de agendamento do WordPress, e funciona de forma semelhante ao crontab do Unix. O CMS agenda tarefas pontuais ou recorrentes (como a publicação de artigos) e na data prevista (na melhor das hipóteses), essa tarefa é executada.

Digo “na melhor das hipóteses” porque a execução de tarefas não é um mecanismo independente, sendo despoletada pelas visitas ao site. Ou seja, se existe uma tarefa agendada para as 15:30, mas ninguém visita o site até às 17:59, essa tarefa não é invocada até às 17:59.

O desafio que tinha pela frente não era a pontualidade da operação, mas sim o facto dos pedidos do WP Cron estarem à mercê dos timeouts do servidor web. Por muito que optimizasse a operação, não seria fácil pôr o PHP a importar 50 mil posts em menos dos 60 segundos configurados.

Continuar a ler “Coisas que aprendi ao importar 50 mil artigos para o WordPress”

WordPress e HipHop Virtual Machine

Nota do editor:

É possível configurar uma nova instalação WordPress usando Nginx, FastCGI e HHVM? É, pois. Pode fazer-se? Pode, claro. É fácil? É mais complicado que cozer um ovo e menos complicado que estabelecer acordos entre partidos políticos. Alguém o fez recentemente? Sim, Luís Rodrigues, Solutions Architect & Business Developer, tratou disso. E o melhor de tudo é que aceitou partilhar connosco o método e os resultados.

Sopa de letras: PHP, CGI e HHVM

É certo e sabido que, sem um empurrãozinho, o PHP não é das linguagens de programação com maior desempenho. É uma linguagem interpretada e, como tal, o seu tempo de execução é condicionado pelo desempenho do próprio interpretador e do ecossistema de componentes em volta.

No seu modelo de execução mais simples e convencional, um servidor web recebe um pedido do browser para gerar conteúdo dinâmico a partir de um script PHP. Para satisfazer o pedido, o servidor reencaminha-o para o interpretador da linguagem, que inicia um processo separado, executa o código e devolve o resultado. O servidor, por sua vez, retorna este resultado ao browser do visitante. Através deste método, denominado Common Gateway Interface (CGI), cada pedido implica um novo processo do interpretador PHP para executar o código necessário. Findo o pedido, o processo do interpretador é terminado.

Continuar a ler “WordPress e HipHop Virtual Machine”