Como fazer meu site, do resultado de um select, enviar emails em uma data pré-determinada, como o voxcards???
Nenhuma descrição foi enviada.
comentários (0)
suspender
Lista de Respostas:
17/10/2002 10:17pm
(~22 anos atrás)
(~22 anos atrás)
no linux, crontab.
no windows, sei que tem uma agenda de tarefas, mas não sei o nome !
[]s
no windows, sei que tem uma agenda de tarefas, mas não sei o nome !
[]s
23/10/2002 7:54pm
(~22 anos atrás)
(~22 anos atrás)
cria um script em php que faça o envio das cartas como se fosse uma pagina normal
ai vc cria um shell script mais ou menos nessa forma:
--------------inicio do script----------------
#!/bin/bash
php -q -f /var/www/default/nome_do_script_em_php.php
--------------fim do script-------------------
ai vc coloca no crontab para executar em uma determinada hora
ex: a 00:01 de cada dia ...
digita: crontab -e
e adiciona a seguinte linha
01 00 * * * /var/www/default/./shell_script
sai e salva e tá feito.....
ai vc cria um shell script mais ou menos nessa forma:
--------------inicio do script----------------
#!/bin/bash
php -q -f /var/www/default/nome_do_script_em_php.php
--------------fim do script-------------------
ai vc coloca no crontab para executar em uma determinada hora
ex: a 00:01 de cada dia ...
digita: crontab -e
e adiciona a seguinte linha
01 00 * * * /var/www/default/./shell_script
sai e salva e tá feito.....
24/10/2002 8:40am
(~22 anos atrás)
(~22 anos atrás)
Wagner... aproveitando sua resposta..... eh possivel eu determinar periodos no crontab?????
24/10/2002 11:18pm
(~22 anos atrás)
(~22 anos atrás)
Sim .. claro .. por exemplo ... vc pode fazer seu server rodar o script a cada 2 horas... assim.
0 */2 * * * script
de 5 em 5 minutos assim
*/5 * * * * detail_rep
Qualquer coisa é so perguntar...
0 */2 * * * script
de 5 em 5 minutos assim
*/5 * * * * detail_rep
Qualquer coisa é so perguntar...
30/10/2002 3:56pm
(~22 anos atrás)
(~22 anos atrás)
Se sua página estiver no Windows NT, você pode usar o comando AT. Digite AT /? no Prompt de Comando para maiores detalhes.
Se você estiver no Windows 9.x use o agendador de tarefas.
Agora se seu site está num servidor gratuito, não sei como fazer.
Se você estiver no Windows 9.x use o agendador de tarefas.
Agora se seu site está num servidor gratuito, não sei como fazer.
01/11/2002 11:11pm
(~22 anos atrás)
(~22 anos atrás)
Não seria possível criar uma função executável a partir de uma página que rode uma vez por dia para checar a enviar os emails marcados para aquele dia?
02/11/2002 5:27pm
(~22 anos atrás)
(~22 anos atrás)
Sim, você pode colocar uma página que se autualiza sozinha de 24 em 24 horas. Mas aí você tem que deixar o browser aberto nesta página o tempo todo. Aí se o seu irmãozinho pequeno vai lá e sai da página, seu esquema tá todo furado.
18/11/2002 1:48pm
(~22 anos atrás)
(~22 anos atrás)
Olá Pessoal tive este problema faz algum tempo:
Tenho um servidor Freebsd onde rodo os meus testes e hospedo em uma provedora que roda um Linux...
Fiz uma solução usando o um recurso do php muito legal, no meu servidor foi uma beleza, pois tenho acesso completo, instalação completa, agora no servidor Linux da provedora eu não tenho shell e o pessoal da provedora nao tem boa vontade para colocar uma linha no crontab.... ai tive que fazer uma solução "Gambi"...
A solução gambi não é 100% como irei explicar mais para frente...
Antes eu gostaria de contribuir a prime
-----------> A Primeira Solucão (correta e legal para quem tem acesso a crontab)
Uma coisa legal do php é que você pode escrever um arquivo no linux onde a primeira linha comece com #!/usr/bin/php e então depois do código normal de PHP. Esta maneira pode ser executada como um arquivo normal ou ate mesmo dentro de um código em Perl...
No meu caso eu fiz o seguinte:
#!/usr/bin/php
<?php
$data_atual = getdate();
$dia = $data_atual["mday"];
$mes = $data_atual["mon"];
$sql_niver = "SELECT user_name, email, datanasc FROM user WHERE MONTH(datanasc) = '$mes' and DAYOFMONTH(datanasc) = '$dia'";
mysql_select_db($db);
$result_niver = mysql_query($sql_niver);
$tot_niver = mysql_numrows($result_niver);
$headers = "From:webmaster@meusite.com.br\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
While ($number < $tot_niver){
$nick_niver = mysql_result($result_niver,$number,"user_name");
$nick_user_email = mysql_result($result_niver,$number,"email");
$message = "<br><br>
Olá, $nick_niver<br><br>
Você recebeu um cartão virtual do site do meu site!<br><br>
<a href=\"http://www.meusite.com.br/index.php?link=cardview&yourid=258f3bd063e0472\">
<font size= +1 color=\"#0000ff\"><u>Click aqui para ver o cartão</u></font>
</a>
<br><Br>
Seu cartão ficará disponível por 15 dias, após este prazo ele será automaticamente removido.";
$message .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message .= "</P>";
$email_user = "$nick_user_email";
$subject = "Você acabou de receber um cartão virtual";
mail($email_user, $subject, $message, $headers);
$number++;
}
?>
-- fim do script
$ chmod 755 envia.php
Ai coloquei o envia.php no crontab...
Foi uma beleza....
---------->Segunda Solução Gambiarra para quem não pode usar crontab
Quando fui colocar na provedora deu o xabu, eu não tinha shell e a "politica" da provedora não permitia usar o contrab deles...
Ai tive a seguinte ideia. Fiz uma tabela de controle de envio, e quando um usuário faz a sua identificação, e a identificação é aprovada, eu verifico se já foi enviado o e-mail no dia, caso não tenha sido o sistema atualiza o controle de envio e envia para os aniversariantes do dia um cartão....
Contudo isso não é 100%, pois pode haver a identificação de 2 ou mais user ao mesmo tempo, apesar q eu rodo isso faz 3 meses e nunca aconteceu isso, se aconteceu o q vai rolar é o cara receber 3 cartoes (parabéns para ele...) e azar o meu! Para ter um controle disso ao terminar de enviar o e-mail para os aniversariantes o sistema tambem manda um e-mail para mim, informando qual usuário inconscientemente envio os cartoes e quais usuários receberam os cartoes... Ahh! fiz varios teste para ver a velocidade, num banco de dados de 3000 registro o usuário que esta enviando os cartoes nem percebe que ta rodando a rotina.
Segue abaixo a Gambi:
$timestamp = date("Y-m-d G:i:s");
$sql_enviou="SELECT enviou FROM niver_eviados";
mysql_select_db($db);
$result=mysql_query($sql_enviou);
$enviou = mysql_result($result,0,'enviou');
$data_banco = substr($enviou,0,10);
$data_atual = date("Y-m-d");
if ($data_banco < $data_atual){
$sql="UPDATE niver_eviados SET enviou='$timestamp', user ='$user_name'";
mysql_select_db($db);
$result=mysql_query($sql);
$data_atual = getdate();
$dia = $data_atual["mday"];
$mes = $data_atual["mon"];
$sql_niver = "SELECT user_name, email, datanasc FROM user WHERE MONTH(datanasc) = '$mes' and DAYOFMONTH(datanasc) = '$dia'";
mysql_select_db($db);
$result_niver = mysql_query($sql_niver);
$tot_niver = mysql_numrows($result_niver);
$message_mau = "Segue abaixo a lista: <br>";
$headers = "From:webmaster@meusite.com.br\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
While ($number < $tot_niver){
$nick_niver = mysql_result($result_niver,$number,"user_name");
$nick_user_email = mysql_result($result_niver,$number,"email");
$message_mau .= "<br> $nick_niver - $nick_user_email";
$message = "<br><br>
Olá, $nick_niver<br><br>
Você recebeu um cartão virtual do site do meu site!<br><br>
<a href=\"http://www.meusite.com.br/index.php?link=cardview&yourid=258f3bd063e0472\">
<font size= +1 color=\"#0000ff\"><u>Click aqui para ver o cartão</u></font>
</a>
<br><Br>
Seu cartão ficará disponível por 15 dias, após este prazo ele será automaticamente removido.";
$message .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message .= "</P>";
$email_user = "$nick_user_email";
$subject = "Você acabou de receber um cartão virtual";
mail($email_user, $subject, $message, $headers);
$number++;
}
$message_mau .= "<br>Os cartões foram enviados por $user_name $timestamp";
$message_mau .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message_mau .= "</P>";
$headers_mau = "From:webmaster@meusite.com.br\n";
$headers_mau .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers_mau .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
$email_user_mau = "meu_email@particular.com.br";
$subject_mau = "Aniversariantes do Dia";
mail($email_user_mau, $subject_mau, $message_mau, $headers_mau);
}
Valeu Galera. Se alguem tiver alguma ideia para melhorar a gambi que fiz eu agradeço.
Atenciosamente,
Maurício Soares
Tenho um servidor Freebsd onde rodo os meus testes e hospedo em uma provedora que roda um Linux...
Fiz uma solução usando o um recurso do php muito legal, no meu servidor foi uma beleza, pois tenho acesso completo, instalação completa, agora no servidor Linux da provedora eu não tenho shell e o pessoal da provedora nao tem boa vontade para colocar uma linha no crontab.... ai tive que fazer uma solução "Gambi"...
A solução gambi não é 100% como irei explicar mais para frente...
Antes eu gostaria de contribuir a prime
-----------> A Primeira Solucão (correta e legal para quem tem acesso a crontab)
Uma coisa legal do php é que você pode escrever um arquivo no linux onde a primeira linha comece com #!/usr/bin/php e então depois do código normal de PHP. Esta maneira pode ser executada como um arquivo normal ou ate mesmo dentro de um código em Perl...
No meu caso eu fiz o seguinte:
#!/usr/bin/php
<?php
$data_atual = getdate();
$dia = $data_atual["mday"];
$mes = $data_atual["mon"];
$sql_niver = "SELECT user_name, email, datanasc FROM user WHERE MONTH(datanasc) = '$mes' and DAYOFMONTH(datanasc) = '$dia'";
mysql_select_db($db);
$result_niver = mysql_query($sql_niver);
$tot_niver = mysql_numrows($result_niver);
$headers = "From:webmaster@meusite.com.br\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
While ($number < $tot_niver){
$nick_niver = mysql_result($result_niver,$number,"user_name");
$nick_user_email = mysql_result($result_niver,$number,"email");
$message = "<br><br>
Olá, $nick_niver<br><br>
Você recebeu um cartão virtual do site do meu site!<br><br>
<a href=\"http://www.meusite.com.br/index.php?link=cardview&yourid=258f3bd063e0472\">
<font size= +1 color=\"#0000ff\"><u>Click aqui para ver o cartão</u></font>
</a>
<br><Br>
Seu cartão ficará disponível por 15 dias, após este prazo ele será automaticamente removido.";
$message .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message .= "</P>";
$email_user = "$nick_user_email";
$subject = "Você acabou de receber um cartão virtual";
mail($email_user, $subject, $message, $headers);
$number++;
}
?>
-- fim do script
$ chmod 755 envia.php
Ai coloquei o envia.php no crontab...
Foi uma beleza....
---------->Segunda Solução Gambiarra para quem não pode usar crontab
Quando fui colocar na provedora deu o xabu, eu não tinha shell e a "politica" da provedora não permitia usar o contrab deles...
Ai tive a seguinte ideia. Fiz uma tabela de controle de envio, e quando um usuário faz a sua identificação, e a identificação é aprovada, eu verifico se já foi enviado o e-mail no dia, caso não tenha sido o sistema atualiza o controle de envio e envia para os aniversariantes do dia um cartão....
Contudo isso não é 100%, pois pode haver a identificação de 2 ou mais user ao mesmo tempo, apesar q eu rodo isso faz 3 meses e nunca aconteceu isso, se aconteceu o q vai rolar é o cara receber 3 cartoes (parabéns para ele...) e azar o meu! Para ter um controle disso ao terminar de enviar o e-mail para os aniversariantes o sistema tambem manda um e-mail para mim, informando qual usuário inconscientemente envio os cartoes e quais usuários receberam os cartoes... Ahh! fiz varios teste para ver a velocidade, num banco de dados de 3000 registro o usuário que esta enviando os cartoes nem percebe que ta rodando a rotina.
Segue abaixo a Gambi:
$timestamp = date("Y-m-d G:i:s");
$sql_enviou="SELECT enviou FROM niver_eviados";
mysql_select_db($db);
$result=mysql_query($sql_enviou);
$enviou = mysql_result($result,0,'enviou');
$data_banco = substr($enviou,0,10);
$data_atual = date("Y-m-d");
if ($data_banco < $data_atual){
$sql="UPDATE niver_eviados SET enviou='$timestamp', user ='$user_name'";
mysql_select_db($db);
$result=mysql_query($sql);
$data_atual = getdate();
$dia = $data_atual["mday"];
$mes = $data_atual["mon"];
$sql_niver = "SELECT user_name, email, datanasc FROM user WHERE MONTH(datanasc) = '$mes' and DAYOFMONTH(datanasc) = '$dia'";
mysql_select_db($db);
$result_niver = mysql_query($sql_niver);
$tot_niver = mysql_numrows($result_niver);
$message_mau = "Segue abaixo a lista: <br>";
$headers = "From:webmaster@meusite.com.br\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
While ($number < $tot_niver){
$nick_niver = mysql_result($result_niver,$number,"user_name");
$nick_user_email = mysql_result($result_niver,$number,"email");
$message_mau .= "<br> $nick_niver - $nick_user_email";
$message = "<br><br>
Olá, $nick_niver<br><br>
Você recebeu um cartão virtual do site do meu site!<br><br>
<a href=\"http://www.meusite.com.br/index.php?link=cardview&yourid=258f3bd063e0472\">
<font size= +1 color=\"#0000ff\"><u>Click aqui para ver o cartão</u></font>
</a>
<br><Br>
Seu cartão ficará disponível por 15 dias, após este prazo ele será automaticamente removido.";
$message .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message .= "</P>";
$email_user = "$nick_user_email";
$subject = "Você acabou de receber um cartão virtual";
mail($email_user, $subject, $message, $headers);
$number++;
}
$message_mau .= "<br>Os cartões foram enviados por $user_name $timestamp";
$message_mau .= "</font><br><br>-----------------------------------------<br>
http://www.meusite.com.br";
$message_mau .= "</P>";
$headers_mau = "From:webmaster@meusite.com.br\n";
$headers_mau .= "Content-Type: text/html; charset=iso-8859-1\n";
$headers_mau .= "Return-Path:webmaster@meusite.com.br\n"; // Return path for errors
$email_user_mau = "meu_email@particular.com.br";
$subject_mau = "Aniversariantes do Dia";
mail($email_user_mau, $subject_mau, $message_mau, $headers_mau);
}
Valeu Galera. Se alguem tiver alguma ideia para melhorar a gambi que fiz eu agradeço.
Atenciosamente,
Maurício Soares
29/11/2002 4:14pm
(~22 anos atrás)
(~22 anos atrás)
Meu método GAMBIarra, ou GAMBITO do xadrez, é um pouquinho diferente desse.
Você constroe um script que vc poderá acessar via web protocolo HTTP mesmo como vc fosse visitar a página.
Nesse script vc faz o que quer fazer e mandar para o servidor.
O truque do meu GAMBI é utilizar um serviçode monitoramente de URL ou de homepage e manda apontar para o tal script no seu servidor. Então mande executar, ou melhor dizendo, visitar sua página 1,2,X vezes por dia.
Existem vários serviço de monitoramente de URL na internet.
http://www.netwhistle.com/
http://www.netmon.com/
http://www.dotcom-monitor.com/
http://www.freewebsiteproviders.com/website-monitoring.htm
Detalhe... Como esse script pode ser considerado delicado dependendo do serviço. Vc pode proteger o diretório onde ele estará instalado e colocar um login e senha. Para que o serviço consiga visitar o script nesse diretório protegido vc pode colocar:
http://user:password@dominio.com.br/dir_seguro/meuscript.php
Esse é o meu GAMBITO contra essas provedoras que não oferecem acesso ao crontab.
Você constroe um script que vc poderá acessar via web protocolo HTTP mesmo como vc fosse visitar a página.
Nesse script vc faz o que quer fazer e mandar para o servidor.
O truque do meu GAMBI é utilizar um serviçode monitoramente de URL ou de homepage e manda apontar para o tal script no seu servidor. Então mande executar, ou melhor dizendo, visitar sua página 1,2,X vezes por dia.
Existem vários serviço de monitoramente de URL na internet.
http://www.netwhistle.com/
http://www.netmon.com/
http://www.dotcom-monitor.com/
http://www.freewebsiteproviders.com/website-monitoring.htm
Detalhe... Como esse script pode ser considerado delicado dependendo do serviço. Vc pode proteger o diretório onde ele estará instalado e colocar um login e senha. Para que o serviço consiga visitar o script nesse diretório protegido vc pode colocar:
http://user:password@dominio.com.br/dir_seguro/meuscript.php
Esse é o meu GAMBITO contra essas provedoras que não oferecem acesso ao crontab.
16/01/2003 6:46pm
(~22 anos atrás)
(~22 anos atrás)
A gambi do Cawvin é a melhor ... mas não é possível que vc hospede seu site em um servidor e ele nao te de acesso ao crontab verifique com eles as vezes eles não dão acesso direto mas voce coloca o codigo ou programa e pede pra adionarem ao crontab e eles adicionam sempre...
power by UAI sÔ!
Valew!
power by UAI sÔ!
Valew!