Como é que crio um trabalho cron a partir do painel do LWS?

Procédure

O que é um cron job?

O objetivo de um cron job é executar automaticamente um script, um comando ou um programa em horários definidos.

Com o"LWS cron job", pode programar um script no seu site para ser executado em horários diferentes. Por exemplo, uma vez por semana, uma vez por dia, no dia 8 de cada mês, etc.

O Cron é uma ferramenta muito útil para os administradores de sistemas automatizarem várias tarefas, como fazer cópias de segurança de dados, atualizar software,enviar e-mails, etc.

É aplicado um tempo limite de 240s a estas tarefas, o que significa que se o seu script demorar mais de 4 minutos a ser executado, será automaticamente encerrado ao fim de 4 minutos.

Como posso criar uma tarefa cron?

Aceder à ferramenta Tarefa Cron

Em primeiro lugar, tem de iniciar sessão na sua conta LWS e aceder ao alojamento partilhado para o qual pretende criar uma tarefa cron.

Uma vez na gestão do seu serviço, procure o bloco"Database & PHP" e clique em"Cron tasks".

Como é que crio um trabalho cron a partir do painel do LWS?

Configurar a frequência do cron job

A primeira coisa a configurar para o seu cron job é a sua periodicidade.

A este nível, o LWS oferece pré-definições na sua ferramenta para que possa configurá-la com um clique.

Para o fazer, basta utilizar a primeira lista no topo do formulário e selecionar um dos parâmetros propostos. Os campos serão automaticamente preenchidos de acordo com a periodicidade indicada na lista selecionada.

Como é que crio um trabalho cron a partir do painel do LWS?

Se a periodicidade que pretende configurar não for proposta nesta primeira lista, não se preocupe, podemos configurar cada elemento.

Para cada elemento (minutos, horas, dias, etc.), pode introduzir os valores manualmente ou utilizar o campo de lista à direita de cada campo.

Assim, se, por exemplo, quiser que a minha tarefa comece todos os dias às 12:27, só tenho de selecionar o número 27 na lista anexa ao campo dos minutos e selecionar 12:00 pm (meio-dia) na lista anexa ao campo das horas.

Dicas / Conselhos

  • Exceto em casos muito especiais, não recomendamos a criação de uma tarefa cron para ser executada a cada minuto, de modo a não saturar o servidor e, consequentemente, reduzir o desempenho do seu serviço.
  • Prefira tarefas que corram à noite e a horas específicas (como 3h47 ) para evitar que as suas tarefas corram ao mesmo tempo que possíveis tarefas automáticas, como podem fazer alguns CMS ou ferramentas utilizadas no seu sítio.

Configurar o campo de comando

Existem três formas de chamar o seu script através da ferramenta Cron Task:

  • Chamada PHP
  • Chamada de wget
  • Chamada cURL

A diferença entre estas três opções reside principalmente na forma como executam o seu script.

Uma chamada Wget ou Curl utiliza o protocolo HTTP, o que significa que estará sujeita às configurações e restrições do Apache, como o tempo limite, que pode ser relativamente curto.

Achamada PHP, por outro lado, estará livre das limitações que discutimos com os outros dois métodos. Pense na chamada PHP como se estivesse a passar por uma ligação SSH.

Poderá, portanto, perguntar-se qual o método a escolher para configurar a sua tarefa Cron. A nossa resposta é que não existem diferenças reais para scripts básicos que são executados rapidamente. No entanto, se a sua tarefa CRON for bastante grande, com muitas acções executadas e, portanto, um tempo de execução ligeiramente mais longo, o método mais adequado será umachamada PHP. Ao contrário do Curl ou do Wget, o tempo limite será mais longo (4 min).

Vamos ver como configurar um cron job para cada uma das chamadas mencionadas acima. Tomaremos como exemplo um site simples que chama um script de raiz.

Chamada cURL

Ao fazer uma chamada curl utilizando o protocolo HTTP, chamamos simplesmente o URL para o nosso ficheiro da seguinte forma

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Também podemos precisar de enviar parâmetros para o nosso script. Para isso, basta adicioná-los da seguinte forma:

curl -d "param1=value1&param2=value2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Isto permitir-nos-á obter estes valores de parâmetros no código do nosso script POST.

Opção Função
-s Modo silencioso (sem barra de progresso).
-H "Cache-Control: no-cache" Forçar a não-cache do lado do servidor.
> /dev/null Redirecciona a saída para não guardar nada.

Chamada Wget

Durante uma chamada Wget, que também usa o protocolo HTTP, como na chamada cURL, também chamaremos o URL do nosso script. Isto dará :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php"

Se precisarmos de passar parâmetros para o script, com o Wget não teremos outra escolha senão passar os parâmetros em GET. Aqui está como escrever o comando :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1&param2=value2"

No script, podemos obter estes dois parâmetros em GET.

Opção Função
--no-cache Evita a utilização de caches intermédios (útil com determinados proxies).
--output-document=/dev/null Não armazena nada localmente.
--header="Cache-Control: no-cache" Envia um cabeçalho HTTP para evitar o cache do lado do servidor.

Chamada PHP

No caso de um site simples, imaginemos que o ficheiro que contém o meu script se chama cron.php

Tudo o que precisa de fazer é introduzir o seguinte comando na ferramenta Cron Task:

php /htdocs/cron.php

Aqui, a versão do PHP utilizada para executar o seu script será a 8.0 por defeito.

Se pretender utilizar uma versão específica do PHP, basta modificar ligeiramente a chamada. Por exemplo, se quiser utilizar a versão 7.2 para executar o script, este é o comando chamado :

php72 /htdocs/cron.php

Podemos também precisar de passar um argumento que será depois utilizado no nosso script.

Por exemplo, imaginemos que o objetivo do nosso script é enviar um e-mail com base num critério que definimos, como o aniversário. Podemos, portanto, querer passar este critério na chamada. Eis como o fazer através da linha de comandos :

php72 /htdocs/cron.php type=anniversary

Casos especiais

Existem também casos especiais, dependendo do que utiliza para o seu sítio.

Por exemplo, no caso de um site criado com a framework Cakephp, a configuração da tarefa CRON será um pouco diferente porque será feita através de um comando SHELL chamado pelo sistema da framework.

Imaginemos que temos um site de comércio eletrónico criado com a estrutura Cakephp e que queremos configurar um script que enviará um e-mail ao melhor cliente para lhe oferecer um código promocional.

Vamos criar um comando Cake a que chamaremos SendCP, que conterá o script que gere o que queremos fazer. Eis como vamos configurar a tarefa Cron :

php72 /htdocs/Console/cake.php SendCP

Demoraria muito tempo a dar um exemplo de cada caso, mas com o que foi dado aqui, já tem uma boa base para utilizar a ferramenta de tarefas Cron.

Usando os vários exemplos, sabemos agora como escrever o nosso comando para :

  • simplesmente executar o nosso script nos intervalos escolhidos
  • executar o nosso script adicionando parâmetros e nos intervalos escolhidos

Criar um ficheiro de registo

Vamos agora ver como criar um ficheiro de registo para podermos ver o que aconteceu durante o script chamado pelo Cron.

Para isso, vamos utilizar o exemplo abaixo para o nosso script CRON.

Exemplo de uma função PHP echo para o ficheiro de registo

<?php /* Para não ter que se preocupar com cache */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /* Escreve a data atual no ficheiro, por exemplo: 2023/01/19 12:24:01 */ /* PHP_EOL permite-lhe saltar uma linha no ficheiro */ echo date('Y/m/d h:i:s').PHP_EOL; /* Escreve a frase abaixo no ficheiro de log */ echo 'A gravar o meu Cron'.PHP_EOL.PHP_EOL; ?>

Renderização do ficheiro de registo depois de lançar o script via Cron Job

2023/01/19 02:57:01 Gravando meu Cron 2023/01/19 03:57:01 Gravando meu Cron 2023/01/19 04:57:01 Gravando meu Cron 2023/01/19 05:57:01 Gravando meu Cron 2023/01/19 06:57:01 Gravando meu Cron 2023/01/19 07:57:01 Gravando meu Cron 2023/01/19 08:57:01 Gravando meu Cron

O que você coloca no seu arquivo de log dependerá de você e do que você quer acompanhar no seu script. Por exemplo, pode ser uma lista de acções com o resultado de cada uma.

Exemplo de uma chamada cURL com retorno num ficheiro de registo

Para uma chamada cURL, aqui está o comando a ser inserido no campo "Comando":

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1

Neste exemplo, serão feitos writebacks (echo PHP) para o ficheiro cron_curl.log na pasta logs. Se o ficheiro ou pasta não existir, será criado automaticamente.

Opção Função
-s Modo silencioso (sem barra de progresso).
-H "Cache-Control: no-cache" Forçar a não-cache do lado do servidor.
> /htdocs/logs/cron_curl.log redirecciona a saída padrão (stdout) para cron_curl.log.
2>&1 também redirecciona os erros (stderr) para o mesmo ficheiro.

Exemplo de chamada ao wget com retorno a um ficheiro de registo

Para uma chamada ao Wget, eis o comando a utilizar:

wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1

Neste exemplo, o feedback de escrita (echo PHP) será enviado para o ficheiro cron_wget.log na pasta logs. Se o ficheiro ou pasta não existir, será criado automaticamente.

Opção Função
--no-cache Evita o uso de caches intermediários (útil com alguns proxies).
--header="Cache-Control: no-cache" Envia um cabeçalho HTTP para evitar o armazenamento em cache no lado do servidor.
--post-data="..." adiciona um cabeçalho HTTP personalizado.
> /htdocs/logs/cron_wget.log redirecciona a saída padrão (stdout) para cron_wget.log.
2>&1 também redirecciona os erros (stderr) para o mesmo ficheiro.

Exemplo de uma chamada PHP com retorno para um ficheiro de registo

Para uma chamada em PHP, eis o comando a utilizar:

php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log

Neste exemplo, o feedback de escrita (echo PHP) será enviado para o ficheiro cron_php.log na pasta logs. Se o ficheiro ou pasta não existir, será criado automaticamente.

Como é que posso gerir as minhas tarefas cron?

Ver as minhas tarefas cron criadas

Depois de ter criado as suas tarefas cron, pode encontrá-las diretamente na listagem que aparece por baixo do formulário de adição.

Como é que crio um trabalho cron a partir do painel do LWS?

Aqui encontrará uma lista com o comando registado, a periodicidade e a opção de eliminar uma tarefa cron ou de a colocar em pausa.

Como é que crio um trabalho cron a partir do painel do LWS?

Como modificar uma tarefa cron?

Se tiver um pacote LWS Starter ou superior, pode modificar o cron job do seu pacote através do Terminal Web acessível a partir da administração do seu pacote.

Para isso, ligue-se ao seu alojamento e aceda ao alojamento partilhado para o qual pretende modificar uma tarefa cron.

Clique em"Terminal" na secção "Software".

Como é que crio um trabalho cron a partir do painel do LWS?

Aceda ao ficheiro cron utilizando o seguinte comando:

crontab -e

Como é que crio um trabalho cron a partir do painel do LWS?

Uma vez no ficheiro cron, procure no ficheiro a tarefa que pretende modificar. Cada linha do ficheiro representa uma tarefa separada. Em seguida, modifique a tarefa cron, certificando-se de que a sintaxe permanece correta. Em seguida, guarde-a utilizando o atalho de teclado [CTRL] +X e depois"Y". De seguida, prima [Enter].

Pode então verificar se a tarefa cron foi corretamente modificada utilizando o seguinte comando:

crontab -l

Como é que crio um trabalho cron a partir do painel do LWS?

Usando tarefas do cron com o DNS da Cloudflare

Por que meus crons não funcionam com o CloudFlare?

Ligou o seu domínio ao CloudFlare utilizando o DNS deste último e pretende configurar um cron job a partir da sua área de cliente na secção associada, mas o cron job só é executado uma vez sem se repetir no intervalo de tempo pretendido. Este problema é conhecido, o CloudFlare bloqueia a execução de crons enviados a partir dos nossos serviços. Para superar esse problema, aqui está uma solução alternativa.

Executar um cron job usando o CloudFlare

As tarefas cron configuradas a partir da área de cliente não funcionam se utilizar o DNS do CloudFlare. Para superar esse problema, siga este procedimento:

  1. Crie um subdomínio (por exemplo: cron.domain.ext) a partir do seu espaço cliente, seguindo esta documentação
  2. Coloque o ficheiro a executar pela sua tarefa cron na pasta com o nome do seu subdomínio no espaço FTP do seu alojamento.
  3. Crie o seu cron job a partir do espaço cliente seguindo as instruções acima nesta documentação.
  4. Ligue-se à sua conta CloudFlare associada ao seu nome de domínio.

Na secção "DNS", adicione um registo CNAME, como mostra o exemplo seguinte:

Como é que crio um trabalho cron a partir do painel do LWS?

Substitua"cron" pelo nome do seu subdomínio e"domain.ext" pelo seu nome de domínio.

Certifique-se de que a nuvem está cinzenta e não laranja. Isto indica ao CloudFlare que não pretende utilizar os seus serviços para este subdomínio.

Pode então clicar no botão"Adicionar registo".

Conclusão

Agora você sabe como : - Entender o propósito e a operação de um cron job 🤖

  • Configurar e executar scripts automaticamente usando a tarefa cron do LWS ⏱️
  • Aceder à ferramenta Cron Task e configurar a periodicidade
  • Utilizar os diferentes métodos de chamada (PHP, wget, cURL) para os seus scripts 🌐
  • Utilizar ficheiros de registo para monitorizar as suas tarefas cron 📝
  • Gerenciar, modificar e visualizar suas tarefas cron criadas 🛠️
  • Usar tarefas cron com o DNS do Cloudflare para contornar problemas de tempo de execução 🛡️

Esperamos que este artigo tenha fornecido todas as chaves para dominar as tarefas cron e automatizar as tarefas do seu sistema de forma eficiente.

Se tiver alguma dúvida, feedback ou dicas para partilhar, não hesite em deixá-los como um comentário. Obrigado pela leitura e até breve para mais conselhos práticos! 🙏💬

Avaliar este artigo :

Este artigo foi útil para si ?

Article utileSim

Article non utileNão

Vous souhaitez nous laisser un commentaire concernant cet article ?

Si cela concerne une erreur dans la documentation ou un manque d'informations, n'hésitez pas à nous en faire part depuis le formulaire.

Pour toute question non liée à cette documentation ou problème technique sur l'un de vos services, contactez le support commercial ou le support technique

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Artigos semelhantes

0mn leitura

Multi-domínio - Colocar vários domínios no mesmo serviço de alojamento web

1mn leitura

É possível remover a função anti-spam do RSpamD no alojamento partilhado?

0mn leitura

Como posso ver as mensagens de correio eletrónico enviadas utilizando a função de correio PHP e bloqueadas pelo SPAMASSASSIN?


Fazer uma pergunta à equipa do LWS e à sua comunidade