Rotina automática no SC pelo sistema

É possível criar no SC uma rotina que faça algo (como por exemplo enviar email, ou actualizar uma tabela) sem que nenhum utilizador esteja no sistema?
Imaginemos a seguinte situação: Tenho uma tabela com dados x,y,z com uma data limite e pretendo seja feita uma comparação com a data do sistema e se esta for superior a data limite do registo atualize um campo a indicar que esse registo já está fora de prazo, e que envie um email para o responsável a indicar tal facto.
Um exemplo mais concreto é numa tabela de clientes o sistema “automáticamente” verificar após cada 00h00 de cada dia quem são os clientes que fazem anos e enviar uma mensagem de feliciatções.

somente agendando no agendador de tarefas do windows ou crontab do linux.

Voce pode criar o procedimento em uma blank.

Olé, criei esta rotina numa blank que serve para enviar uma mensagem de aniversário para os vendedores no dia de aniversário dos mesmos.

sc_select(meus_dados,“SELECT count(*) AS contagem FROM vendedores where month(datanasc) = month(now()) and day(datanasc) = day(now())”);

$xtotalclientes = $meus_dados->fields[0];
sc_set_global($xtotalclientes);

$wwsql = "SELECT numero,estado,nome,datanasc,idade,telef01,email01,director FROM vendedores where month(datanasc) = month(now()) and day(datanasc) = day(now()) ";

sc_lookup(wresp,"$wwsql");

if (empty({wresp[0][0]}))
{
//echo "Erro de acesso. Mensagem = " . {wresp};
}

if(!empty({wresp[0][0]}))
{
$tam = sizeof({wresp[0][0]});

for($i = 0; $i < $xtotalclientes; $i++) 
{

//echo {wresp[$i][0]}." \n";

$xvendedor = {wresp[$i][2]};
$xvendedortelef = {wresp[$i][5]};
$xvendedoremail = {wresp[$i][6]};
$xnomedirector = {wresp[$i][7]};

$assunto = “FELIZ ANVIVERSÁRIO”;

$xpara = {wresp[$i][6]};

  $xemail ="geral@reallusa.pt";
	$BCC="geral@software-global.info";

$mensagem = ‘’;

$mensagem .="";
$mensagem .=“Caro/a “.$xvendedor.”, neste dia especial em que você comemora mais um ano da sua vida, gostaríamos de lhe prestar esta pequena, mas sentida, homenagem desejando-lhe para o efeito um feliz aniversário!”;
$mensagem .= “
”;
$mensagem .= “
”;
$mensagem .=“O(a) Director(a),”;
$mensagem .= “
”;
$mensagem .=$xnomedirector;
$mensagem .= ‘’;

sc_mail_send(“localhost”, “crm@reallusa.pt”, “crm_2015”, $xemail , $xpara, $assunto, $mensagem, ‘H’, $BCC);
if ({sc_mail_ok})
{
//echo “Enviados {sc_mail_count} e-mail com sucesso !!”;
}
else
{
//sc_erro_mensagem({sc_mail_erro});
}
}

}

no CPANEL na área do cron jobs tenho a execução da rotina desta forma:

/usr/local/bin/php -q /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php

obtenho este resultado por email
:
Warning: include_once(…/_lib/lib/php/nm_utf8.php): failed to open stream: No such file or directory in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1695

Warning: include_once(): Failed opening ‘…/_lib/lib/php/nm_utf8.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1695

Warning: include_once(…/_lib/lib/php/nm_ctrl_app_name.php): failed to open stream: No such file or directory in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1699

Warning: include_once(): Failed opening ‘…/_lib/lib/php/nm_ctrl_app_name.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1699

Fatal error: Call to undefined function SC_dir_app_ini() in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1701


outra forma que vi de executar a rotina

http://www.reallusa.pt/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php
desta maneira no browser funciona na perfeição… envia os emails correctamente.

mas colocando no cron jobs
obtenho a seguinte emnsagem enviada pelo sistema:
/usr/local/cpanel/bin/jailshell: http://www.reallusa.pt/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php: No such file or directory~

ALGUMA DICA para CLOCAR ISTO A FUNCIONAR?
Obrigado pelo vosso tempo

O scriptcase mesmo na blank trabalha com path relativos.
Por isto não está achando suas próprias bibliotecas pela linha de comando.
Path relativo somente no navegador ou seja servidor web.
Use um notepad para criar este rotina com paths reais fora do SC. É o único jeito.

Sendo assim nestes erros
/usr/local/bin/php -q /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php

obtenho este resultado por email :
Warning: include_once(…/_lib/lib/php/nm_utf8.php): failed to open stream: No such file or directory in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1695

Warning: include_once(): Failed opening ‘…/_lib/lib/php/nm_utf8.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1695

Warning: include_once(…/_lib/lib/php/nm_ctrl_app_name.php): failed to open stream: No such file or directory in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1699

Warning: include_once(): Failed opening ‘…/_lib/lib/php/nm_ctrl_app_name.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1699

Fatal error: Call to undefined function SC_dir_app_ini() in /home/reallusa/public_html/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php on line 1701

TENHO de IR a cada uma das linhas e indicar o PATH indicado

Se você fizer isto, colocar os paths reais, na blank irá funcionar.
Mas sinceramente somente doido faria isto de arrumar os paths reais nos fontes do SC.
São muita linhas de programação geradas.
Eu disse para pegar um notepad e começar uma aplicação do zero por fora do SC.
Será algo com menos código, mais limpo e de execução rápida.
Se gastar umas 25 a 50 linhas será muito.

Chama no Crontab desta forma:
wget -O /dev/null http://seudominio.com.br/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php

No Cpanel, executar a rotinas da seguinte forma:
wget http://www.reallusa.pt/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php

ver anexo


Screenshot_2xxxxx.jpg

É por isto que acho bom o Fórum.
Apesar de as vezes querer apagar todos os meus post e sair dele.
Nossos amigos Herberto Silva e Everaldo Claro dos Anjos me fizeram lembrar que estamos falando do poderoso shell do Gnu/Linux.
Há navegadores texto como o lynx -> https://pt.wikipedia.org/wiki/Lynx_(navegador)
Com o lynx você pode navegar em modo texto através de qualquer página web.
Instale o lynx e faça no cron a chamada normal:
lynx -dump http://seudominio.com.br/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php > /dev/null

Observação: O wget é usado para fazer download. Melhor usar a solução apropriada.

PS: Para testar antes de colocar no cron vá no shell e faça: lynx http://seudominio.com.br/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php

Mas o problema é que tenho a aplicação a ser executada num alojamento partilhado… não tenho acesso ao shell

Realmente a maioria dos provedores compartilhados não permitem shell.
Eu libero para meus clientes de hospedagem compartilhada o shell através de enjaulamento.
Somente tem acesso a sua pasta e com comandos limitados.
Neste caso não sei como ajudar.
Abra um ticket perguntando sobre sua dificuldade com seu provedor.

Uma blank que avalia o agendamento e executa os procedimentos disparada sempre após o login ou em ações do menu.

a diferença é que necessita de um utilizador, mas o procedimento será executado automaticamente. Isso funciona para jobs de baixo impacto.

Tente desta forma:
wget -O /dev/null http://seudominio.com.br/crm/blank_aniversarios_vendedores/blank_aniversarios_vendedores.php
Não vai ficar lixo.

Execute desta forma que não vai f

Eu utilizo conforme o exemplo do Everaldo

wget -O /dev/null http://sistemasinpol.com.br/aniversariantes/aniversariantes.php

E a aplicação aniversariantes.php é uma blank e o trabalho está configurado para ser executado diariamente as 08:00h.

Top