Como uso curl em um trabalho cron?


12

Preciso configurar um trabalho cron no cpanel que chama uma URL (no mesmo servidor) uma vez por semana. Eu ia usar o wget, mas acontece que isso está desativado no servidor compartilhado que está sendo usado.

Existe uma alternativa para o wget ? Ouvi dizer que o curl pode ser usado, mas não sei como configurá-lo em um comando cron.

Além disso, qual é o comando para fazer o cronjob não fazer nada na conclusão?

Todas as idéias muito apreciadas!


1
O que o wget faria se você pudesse usá-lo?
user9517

Por que eles permitiriam ondulações no caso de terem desativado o wget?
andol

@Iain - é necessário para processar um script PHP
davidhyland

@ Andol - pergunta muito boa. isso é apenas como ela é
davidhyland

Respostas:


19

em vez de usar o wget, o curl funciona assim:

curl --silent http://domain.com/cron.php

que funcionará da mesma maneira que o wget. se é um arquivo php que você está iniciando, existe algum motivo para você não executá-lo através do interpretador php da linha de comando da seguinte forma:

php -q /path/to/cron.php

o mesmo em uma solicitação do servidor da web e geralmente funciona muito mais rápido e sem certas restrições de tempo limite presentes quando chamadas pelo servidor da web / curl


Chamar curl dessa maneira imprimirá o resultado em stdout. Se você deseja se comportar de maneira equivalente ao wget e salvar a saída em um nome de arquivo com base no URL, você também deseja adicionar o sinalizador --remote-name.
andol

o --silent significa que não há resposta ou saída?
Davidhyland

1
Além disso, chamar o script php na linha de comando pode não necessariamente gerar o mesmo resultado. Além da possibilidade de configuração diferente, também existe o cenário incomum do script sendo executado como um usuário diferente dessa maneira. Tudo depende da configuração.
andol

Bem, eu consegui funcionar usando "curl --silent domain.com/script.php > / dev / null 2> & 1", mas também funciona bem com "curl -o --url domain.com/script.php > / dev / null 2> & 1 "qual é a diferença?
Davidhyland 9/08

1
O primeiro comando envia toda a saída para / dev / null, o segundo cria um arquivo chamado -urlno diretório inicial do usuário que está executando o script, que contém a saída do seu arquivo php, e todas as outras saídas vão para / dev / null.
user9517

6

Se o enrolamento estiver disponível, você pode tentar algo como

1 1 * * 0  /usr/bin/curl --silent http://example.come/some.php &>/dev/null

Isso deve fazer com que a curvatura fique completamente silenciosa, para que você não receba nenhum email após a conclusão.


4
Eu recomendaria usar a opção --show-error também, por isso é silencioso para operação normal, mas gera um erro se isso acontecer.
emerino

5

Eu sugiro adicionar o parâmetro "-m" além de --silent, pois esse parâmetro define o tempo máximo permitido para a transferência. Imagine que você chama o cron a cada minuto e o script leva 2 minutos - isso pode ter um impacto ruim na carga do servidor ou outras coisas.

1 1 * * 0  /usr/bin/curl -m 120 -s http://example.come/some.php &>/dev/null
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.