Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Enviar valores para outro arquivo executando cron

09-02-2018 12:06

Estou tentando enviar valores para outro arquivo através de um arquivo sendo executado pelo cron.

Preciso enviar por GET e POST. Por GET, eu estava tentando enviar usando location.href do JavaScript, e, por POST, para se submeter o formulário, estava usando um autosubmit em JavaScript. Esses códigos funcionam através do navegador, porém, não foram executados através do cron, e, pesquisando, cheguei à informação de que o cron não executaria JavaScript, por não ser um navegador.

Continuei pesquisando e encontrei várias sugestões para se usar CURL, e estou tentando executar os códigos deste link https://stackoverflow.com/questions/122 ... n-php-curl. Em verdade, minha primeira tentativa está sendo com GET; porém, essa tentativa está frustrada.

O código do link que estou tentando usar com GET é este (item 86):

$qry_str = "?x=10&y=20"; $ch = curl_init(); // Set query data here with the URL curl_setopt($ch, CURLOPT_URL, 'http://example.com/test.php' . $qry_str); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); $content = trim(curl_exec($ch)); curl_close($ch); print $content;

Há alguma sugestão de como é a melhor forma de se enviar valores para outro arquivo através do cron, e, se os exemplos
do link estiverem corretos, é possível me ajudar a fazê-los funcionar?

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

10-02-2018 11:17

Tem um exemplo bem simples no link a seguir de como enviar dados via GET e POST ao mesmo tempo usando o curl. http://codular.com/curl-with-php

Fiz uma adaptação usando o mesmo código:

teste.php

<?php // Get cURL resource $curl = curl_init(); // Set some options - we are passing in a useragent too here curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'http://localhost/dados.php?get1=abcd', // GET VAI PELO LINK CURLOPT_USERAGENT => 'Codular Sample cURL Request', CURLOPT_POST => 1, CURLOPT_POSTFIELDS => array( 'post1' => '1234' // POST VAI POR AQUI ) )); // Send the request & save response to $resp $resp = curl_exec($curl); echo $resp; // Close request to clear up some resources curl_close($curl); ?>

dados.php

<?php echo "Os valores enviados foram {$_POST['post1']} e {$_GET['get1']}"; ?>

0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

16-02-2018 10:16

Obrigado. Um código que testei anteriormente e o código que você postou fazem ocorrer erro 400 - "BAD REQUEST" (It is not a valid request!). Por quê isto pode estar ocorrendo?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

16-02-2018 11:09

Esse erro 404 parece que está ocorrendo por eu estar tentando enviar uma quantidade muito grande de valores de variáveis por GET: estava tentando enviar 6 valores de variáveis, e fui excluindo até ser aceita a quantidade de 04 valores. Isso pode ser contornável?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

16-02-2018 11:21

Desculpe: erro 400. Você pode corrigir na postagem anterior e excluir esta? Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

16-02-2018 11:29

Me parece que há um limite de caracteres enviados por GET.

Eu fiz um teste assim:

CURLOPT_URL => 'http://localhost/xml.php?teste1=1&teste2=2&teste3=3&teste4=4&teste5=5&teste6=6',

Passou todos os valores. Então creio que o limite está na quantidade de caracteres de cada variável, e não na quantidade de variáveis.

Se possível me passa uma simulação dos valores que enviou que testo aqui para ver o problema.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

16-02-2018 16:34

Os valores são originários de consulta no banco de dados, e uma simulação poderia ser isto?

vl1=$cons[vl1]&vl2=$cons[vl2]&vl3=$cons[vl3]&vl4=$cons[vl4]&vl5=$cons[vl5]&vl6=$cons[vl6]

Ou você quer o equivalente dos valores, mesmo, com a quantidade de caracteres semelhantes?

Tenho uma dúvida sobre o arquivo para o qual são enviados os valores: o arquivo que recebe os valores envia esse valores para outros arquivos. Somente o arquivo que é executado pelo cron deve utilizar cURL, ou os outros também devem? Ou seja, nos demais, eu poderia usar JavaScript enviando os valores com location.href?

Estou tentando utilizando o código cURL nos demais arquivos, mas parece que o código não está sendo executado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

16-02-2018 20:09

Seriam os valores mesmos. Com a quantidade de caracteres que são enviados.

No caso como você precisa enviar dados via POST e GET de uma única vez deve usar o CURL. Já se não for necessário usa o location.href.
Ai dependendo do caso pode até fazer um redirecionamento do arquivos que recebe os dados enviados da primeira vez para o arquivo que terá o location.href.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

16-02-2018 21:26

Vou verificar o tamanho dos valores das variáveis que usei no teste, mas, como são "variáveis", haverá situações em que uns podem ser maiores que os outros, referentes ao mesmo campo.

Sobre o envio dos dados, quando referi sobre GET e POST, eu devo ter sido vago, dando a entender que devo enviar pelos dois métodos ao mesmo tempo, mas, agora, não preciso. Estou enviando por GET no arquivo que está sendo executado no cron e no arquivo seguinte, e em outro arquivo envio por POST.

Sobre o redirecionamento que você referiu, estou tentando fazer isso, mas a impressão que tenho é que os dados não estão sendo enviados pelo arquivo executado no cron, ou não estão sendo recebidos pelos demais, e não sei como verificar isso.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

17-02-2018 15:47

Se armazenasse os dados enviados no banco de dados já teria uma base para ver se os dados realmente foram enviados. Caso contrário tem que fazer algo visualmente. Ou seja, testar o arquivo usado no cron manualmente e ver se está funcionando corretamente. Depois deixar que o cron o execute.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

18-02-2018 10:29

Entendi. Mas tenho uma dúvida quanto ao cURL: se envio dados para um arquivo, seja por location.href, seja por um formulário usando action, fazendo isso através do navegador, eu estou chamando esse arquivo, e, nele, estou usando os valores enviados. Isso ocorre com o cURL, como, por exemplo, no código que você postou na mensagem 10? Ou seja, os arquivos para os quais são enviados os valores também são chamados para neles se poder trabalhar com tais valores? Sei que pode parecer uma pergunta tola, mas quero ter certeza disso.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

18-02-2018 14:37

Geralmente se usar o CURL quando se quer enviar alguns dados para outro arquivo sem usar os meios tradicionais como: formulários, envio de dados por link, etc.

Os modos de trabalhar com os valores recebidos do CURL são os mesmos dos outros métodos.

Agora, se for trabalhar com o cron é melhor em tarefas que sejam repetitivas, como por exemplo atualizar determinada informação de tempos em tempos.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

20-02-2018 16:48

Fiz o teste do código fora do cron, conforme você sugeriu, e consegui utilizar o cURL, mas somente com GET.

Usei 4 arquivos: A, B, C e D. De A (que será executado no cron) para B, usei cURL, assim como de B para C, em ambos enviando os valores por GET. De C para D, usei um formulário com POST que faz um autosubmit em JavaScript. Não consegui enviar por POST através do cURL. Eu acabei usando o código, para enviar por GET, citado como exemplo em minha mensagem de n.° 1, reduzindo os valores enviados para somente dois.

Eu não soube individualizar (separar os códigos somente para GET e para POST) a adaptação que você postou na sua mensagem de n.° 2.

Eu ainda gostaria de enviar os valores por POST através do cURL.

Por enquanto, vou testar o código no cron, executando nele o primeiro arquivo, e o envio dos valores por POST através do form, até conseguir enviar por cURL.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

20-02-2018 17:58

No caso de C para D você deve capturar a variável que veio de C e jogar dentro do CURL. Algo como:

'post1' => $_GET['variavel_de_c'] // POST VAI POR AQUI
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

22-02-2018 17:12

Sim. Obrigado. Mas antes de eu tentar (e vou precisar usar o cURL para enviar por POST), há como você desmembrar o código de sua mensagem n.° 2, que é para enviar por GET e POST ao mesmo tempo, para enviar somente por GET e somente por POST, para que eu consiga enviar individualmente? Receio excluir o que possa ser necessário para um ou outro método funcionar.

Quanto ao que referi como fiz de C para D, usando um formulário com autosubmit em JavaScript, o código é este:

<form method="post" name="formulario" action="arquivo.php"> <input type="hidden" name="valor" value="<?php echo $_consulta['valor']; ?>" /> <script type="text/javascript"> document.formulario.submit(); </script> </form>

Quando o script é executado fora do cron, isso funciona normalmente. Mas testei com o cron e não funciona. Quando o script chega no arquivo que tem esse código, ele trava. Vou ter de enviar por POST através do cURL.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

23-02-2018 16:10

A alteração para enviar só GET ou só POST é bem simples. No script que postei você comenta a linha abaixo:

// 'post1' => '1234' // POST VAI POR AQUI

E não será mais enviado valores por POST.

Já na linha

CURLOPT_URL => 'http://localhost/dados.php', // GET VAI PELO LINK

Basta não enviar valores após a URL.

Sendo assim é só você pegar o script original que postei e comentar a linha que citei mais acima, do post1, e terá a versão que só enviará GET.

Faz uma cópia do mesmo arquivo, dessa vez tira o comentário da linha do post1 e retira os dados enviado junto com o link. E só enviará por POST.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

24-02-2018 09:06

Obrigado. Entendi. Vou testar e retorno.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

24-02-2018 09:13

A propósito, nas tentativas anteriores de enviar por POST, o envio era de mais de um valor. Tentei enviar da maneira abaixo, mas não houve o envio:

'post1' => '$consulta_banco[valor1]', 'post2' => '$consulta_banco[valor2]', 'post3' => '$consulta_banco[valor3]', 'post4' => '$consulta_banco[valor4]'

Isso está correto?

Grato.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

24-02-2018 09:34

Desculpe por postar em seguida, mas há um equívoco na maneira que postei o código. Na verdade, a maneira como tentei enviar é esta, não havendo o envio:

'valor1' => '$consulta_banco[valor1]', 'valor2' => '$consulta_banco[valor2]', 'valor3' => '$consulta_banco[valor3]', 'valor4' => '$consulta_banco[valor4]'

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17851
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Enviar valores para outro arquivo executando cron

24-02-2018 15:11

As aspas são desnecessárias fora das variáveis nesse caso.

'valor1' => $consulta_banco['valor1'], 'valor2' => $consulta_banco['valor2'], 'valor3' => $consulta_banco['valor3'], 'valor4' => $consulta_banco['valor4']

0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1324
Sexo: Masculino

Re: Enviar valores para outro arquivo executando cron

24-02-2018 17:50

Entendi. Acabei conseguindo enviar assim 'valor1' => "$consulta_banco[valor1]", mas vou refazer para a forma como você sugeriu.

Consegui fazer rodar o script todo, e fiquei muito contente por ter aprendido mais esse recurso cURL.

Sou muito grato pela força, novamente.
1

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado