Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luciano Zanita

Problema em rodar arquivo php com cronjob

Recommended Posts

Olá pessoal tenho esse seguinte script:

<link href="/admin/inc/estilo-streaming.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/admin/inc/ajax-streaming.js"></script>
<script type="text/javascript" src="/admin/inc/javascript.js"></script>
<script type="text/javascript" src="/admin/inc/sorttable.js"></script>
<script type="text/javascript" src="/admin/inc/tooltip.js"></script>

<script>
function testee(porta){
	alert("teste:" + porta);
};

// Função para ligar o autodj
function agendar_autodj( porta,playlist,shuffle,bitrate,xfade ) {
	
  if(porta == "" || playlist == "") {
  alert("Erro! Tente novamente ou contate o suporte.");
  } else {
 
  //document.getElementById('log-sistema-conteudo').innerHTML = "<img src='admin/img/ajax-loader.gif' />";
  //document.getElementById('log-sistema-fundo').style.display = "block";
  //document.getElementById('log-sistema').style.display = "block";
  
  var http = new Ajax();
  http.open("GET", "/admin/funcoes-ajax/ligar_autodj/"+porta+"/"+playlist+"/"+shuffle+"/"+bitrate+"/"+xfade+"" , true);
  http.onreadystatechange = function() {
	
  if(http.readyState == 4) {
  
	resultado = http.responseText;
	
	document.getElementById("log-sistema-conteudo").innerHTML = resultado;		
	
  }
  
  }
  http.send(null);
  delete http;
  }
}

// Função para desligar o autodj
function desligar_autodj( porta ) {
	
  if(porta == "") {
  alert("Erro! Tente novamente ou contate o suporte.");
  } else {
  

  var http = new Ajax();
  http.open("GET", "/admin/funcoes-ajax/desligar_autodj/"+porta , true);
  http.onreadystatechange = function() {
	
  if(http.readyState == 4) {
  
	resultado = http.responseText;
	
	document.getElementById("log-sistema-conteudo").innerHTML = resultado;	
	
  }
  
  }
  http.send(null);
  delete http;
  }
}


</script>

<?php 
//ini_set('display_errors',1);
//ini_set('display_startup_erros',1);
// error_reporting(E_ALL);
require_once("admin/inc/protecao-final.php");
require_once("admin/inc/funcoes.php");
$dados_config = mysql_fetch_array(mysql_query("SELECT * FROM configuracoes"));
$dados_stm = mysql_fetch_array(mysql_query("SELECT * FROM streamings where porta = '".$_SESSION["porta_logada"]."'"));
$dados_servidor = mysql_fetch_array(mysql_query("SELECT * FROM servidores where codigo = '".$dados_stm["codigo_servidor"]."'"));
$dados_revenda = mysql_fetch_array(mysql_query("SELECT * FROM revendas WHERE codigo = '".$dados_stm["codigo_cliente"]."'"));
$dados_play = mysql_fetch_array(mysql_query("SELECT * FROM playlists where nome = '".$dados_stm["codigo"]."'"));
$cor_status = ($dados_stm["status"] == 1) ? "#FFFFFF" : "#FFB3B3";
$total_playlists = mysql_num_rows(mysql_query("SELECT * FROM playlists where codigo_stm = '".$dados_stm["codigo"]."'"));
$porta_code = code_decode($dados_stm["porta"],"E");
$porta = code_decode(query_string('3'),"D");
$url_logo = ($dados_revenda["url_logo"] == "") ? "http://".$_SERVER['HTTP_HOST']."/admin/img/img-logo-painel.gif" : $dados_revenda["url_logo"];
$status_streaming = status_streaming($dados_servidor["ip"],$dados_stm["porta"]);
$porta = code_decode(query_string('1'),"D");
$porta_code = query_string('1');
$cor_status = ($dados_stm["status"] == 1) ? "#FFFFFF" : "#FFB3B3";
$status_streaming = status_streaming($dados_servidor["ip"],$dados_stm["porta"]);
$porta_code = code_decode($dados_stm["porta"],"E");



$porta = $porta_code;
$playlist = $_GET['playlist'];

//echo"<html><head><script language='JavaScript'>testee('$porta_code');</script></head></html>"; 
echo"<html><head><script language='JavaScript'>desligar_autodj('$porta');</script></head></html>"; 
echo"<html><head><script language='JavaScript'>agendar_autodj('$porta','$playlist',0,'','');</script></head></html>"; 
//echo"<script>alert('ok: $porta_code')</script>"; 
 
//echo "ligar_autodj("VDBSQmQwMUJQVDA9K1U=","10",'0','','',true)";  //* chama a função  
 

?>
<html><body>
    <!-- Início div log do sistema -->
<div id="log-sistema-fundo"></div>
<div id="log-sistema">
<div id="log-sistema-botao"><img src="admin/img/img-icone-fechar.png" onclick="document.getElementById('log-sistema-fundo').style.display = 'none';document.getElementById('log-sistema').style.display = 'none';" style="cursor:pointer" title="Fechar" /></div>
<div id="log-sistema-conteudo"></div>
</div>


<!-- Fim div log do sistema -->
</body></html>

Ao rodar ele pelo navegador ele executa a função dele mais quando faço isso via CRONJOB no cpanel ele não executa simplesmente nenhuma função, estou usando GET, não se a causa é no arquivo ou no CRONJOB, vocês poderia me dar uma luz? estou a horas tentando achar o erro dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem como usar $_GET via cron Luciano, você tem que usar $argv.

na cron chame o script assim:

arquivo.php id=1 nome=teste

e dentro do arquivo para recuperar os valores faça assim:

if (isset($argv) && !empty($argv)) {
	   parse_str($argv[1]);
	   parse_str($argv[2])
} else {
	   $id= $_GET['id'];
	   $nome= $_GET['nome'];
}

e troque nos locais onde usa o GET por $id ou $nome por exemplo.

Com esse ajuste a coisa tem que funcionar tanto na cron quanto via web.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem como usar $_GET via cron Luciano, você tem que usar $argv.

na cron chame o script assim:

arquivo.php id=1 nome=teste

e dentro do arquivo para recuperar os valores faça assim:

if (isset($argv) && !empty($argv)) {
	   parse_str($argv[1]);
	   parse_str($argv[2])
} else {
	   $id= $_GET['id'];
	   $nome= $_GET['nome'];
}

e troque nos locais onde usa o GET por $id ou $nome por exemplo.

Com esse ajuste a coisa tem que funcionar tanto na cron quanto via web.

 

Abraços.

 

Então no CRON to usando assim GET linkempresa.com.br/cron.php?porta=8000&playlist=5

Entende?

Só que ele não executa de forma alguma só que se eu abrir o arquivo o mesmo link pelo navegador faz a função.

 

Poderia me dar uma dica sobre esse arg que você disse não compreendi muito bem ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você não entendeu. Chamar um arquivo por cron pode ser parecido com rodar pelo navegador, entretanto, quando chamado por cron, as query strings não são interpretadas.

 

As query strings devem ser passadas como argumentos, da forma que está demonstrada no post #2.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você não entendeu. Chamar um arquivo por cron pode ser parecido com rodar pelo navegador, entretanto, quando chamado por cron, as query strings não são interpretadas.

 

As query strings devem ser passadas como argumentos, da forma que está demonstrada no post #2.

 

não consegui entender ainda...

como deveria aplicar o CRONJOB para o arquivo?

Um exemplo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cronjob é completamente distinto do php.. é apenas um agendador de tarefas..

 

a dificuldade que vc está tendo é em executar o php em modo CLI (Command Line Interface)

 

as queries strings usadas em URLs são do protocolo HTTP, o que não tem nada a ver com CLI..

 

no post #2 está um exemplo de como proceder..

 

todavia, obvservando o script no post #1 superficialmente, nota-se que há execuções javascript...

 

mesmo que passe os parâmetros via CLI e resgate-os corretamente, não conseguirá executar o script, pois não há um parser para interpretar o html e tampouco o javascript pois está executando em modo CLI, sem navageador algum..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então no CRON to usando assim GET linkempresa.com.br/cron.php?porta=8000&playlist=5

Entende?

Só que ele não executa de forma alguma só que se eu abrir o arquivo o mesmo link pelo navegador faz a função.

 

Poderia me dar uma dica sobre esse arg que você disse não compreendi muito bem ele.

 

Para compreender melhor o funcionamento do $argv leia http://br.php.net/manual/pt_BR/reserved.variables.argv.php

Para compreender melhor o funcionamento do parse_str leia http://br.php.net/manual/pt_BR/function.parse-str.php

Usei os 2 em conjunto. Se ler e entender o que faz cada função, vai perceber que no post #2 eu te dei a solução pronta.

Basta adaptar.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.