O trabalho do Cron ignora parte do URL do acionador

1

Eu criei uma tarefa cron para acionar uma URL em horários definidos, que por sua vez inicia um script de importação de produto. Mas, por algum motivo, parte do URL de trigger com parâmetros é eliminada.

Eu configurei o cron job assim:

/usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX&import_id=3&action=processing

Mas só corre http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX . Onde está a última parte que realmente diz ao roteiro o que fazer?

Quem sabe por que se comporta assim e como fazê-lo funcionar?

    
por Ash 13.02.2015 / 21:13

2 respostas

3

O caractere e comercial ( & ) realmente significa algo no Linux (bem, em um shell compatível com o Bourne). Isso significa: execute o comando como uma tarefa em segundo plano .

Por causa disso, você está realmente dizendo ao cron para executar /usr/bin/wget -O /dev/null http://domain.nl/wp-cron.php?import_key=XXXXXXXXXX em segundo plano e fazer action=processing . E é isso que o cron está fazendo por você - o que você disse para fazer.

Para contornar isso, você precisa escapar do caractere & , para que ele seja processado como parte da URL, em vez de ser interpretado como um caractere de controle.

A solução mais fácil é encapsular o URL entre aspas.

    
por 13.02.2015 / 21:28
2

Além do e comercial que já foi mencionado, você também precisa ter cuidado com um caractere % em uma entrada do cron. % em uma entrada cron será interpretado como uma quebra de linha e deve ser escapado com uma barra invertida ( \% ). Certifique-se de que o import_key censurado não tenha esse caractere. Além disso, as URLs geralmente têm % para escapar de certos caracteres como espaço ( ), = , etc.

    
por 13.02.2015 / 21:44