Ir para conteúdo

POWERED BY:

Arquivado

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

WHR

Newslleters

Recommended Posts

Boa tarde galera, tenho um site de balada e no meu cadastro consta em torno de 500 registros. desenvolvi uma newslleter ela esta encaminhando de boa porem na hora de mandar esta acusando esta mensagem "MySQL server has gone away".

 

Como resolvo isto para que ao terminar de mandar ele retorne na tela e não acuse esta mensagem?

 

segue o código

 

if($_GET['btn'] == "gravar"){

  $mostrar = mysql_query("SELECT CadVisit_antigo.EMail FROM CadVisit_antigo");
  if (!$mostrar){
  $resp = "Ocorreu algum erro";
 }
  while($linha = mysql_fetch_array($mostrar, $c)) {
  
  $EMail = $linha["EMail"];
	
	$EndServ = "http://www.siteeexemplo.com.br/";
	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: <emf@site.com.br>\n";
	$Assunto = "titulo!!!";

	mail($EMail, $Assunto, "<html>
<body bgcolor=\"#F0F0F0\">
<table width=\"550\" border=\"0\" align=center cellpadding=\"0\" cellspacing=\"0\">
  <tr>
	<td><a href=\"http://www.siteexemplo.com.br/\"><img src=\"" . $EndServ . "/templante/midia.jpg\" width=\"550\" height=\"490\" border=\"0\" alt=\"\"></a></td>
  </tr>
</table>
</body>
</html>
", $headers);

 }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

nos meus 8 meses com PHP nunca vi este erro O_O

 

 

 

 

OBS: eu faria diferente..

 

Enviaria de 10 em 10 e-mails porque: Alguns sites... e/ou serviços de E-mails definem como SPAM alguns sistemas de Envio de E-mails em massa.

 

Enviando de 10 em 10 seu servidor não trava a caixa de saída de seu site... e não bloqueia seu domínio. =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

nos meus 8 meses com PHP nunca vi este erro O_O

 

 

 

 

OBS: eu faria diferente..

 

Enviaria de 10 em 10 e-mails porque: Alguns sites... e/ou serviços de E-mails definem como SPAM alguns sistemas de Envio de E-mails em massa.

 

Enviando de 10 em 10 seu servidor não trava a caixa de saída de seu site... e não bloqueia seu domínio. =D

Valeu Renato, como faço para adaptar no meu código este lance de mandar 10 em 10?

Compartilhar este post


Link para o post
Compartilhar em outros sites

if($_GET['btn'] == "gravar"){
$contador_sleep=0;
  $mostrar = mysql_query("SELECT CadVisit_antigo.EMail FROM CadVisit_antigo");
  if (!$mostrar){
  $resp = "Ocorreu algum erro";
}
  while($linha = mysql_fetch_array($mostrar, $c)) {
  if($contador_sleep==10){
	  $contador_sleep=0;
	  sleep(10);
	  //Sleep(10) espera 10 segundos antes de continuar a execução do Script.
	  //Usando ele.. quando a variável $contador_sleep atingir a quantia de 10.. ele zera a variável e espera 10 segundos antes de continuar o envio.
  }
  
  $EMail = $linha["EMail"];
	
	$EndServ = "http://www.siteeexemplo.com.br/";
	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: <emf@site.com.br>\n";
	$Assunto = "titulo!!!";

	mail($EMail, $Assunto, "<html>
<body bgcolor=\"#F0F0F0\">
<table width=\"550\" border=\"0\" align=center cellpadding=\"0\" cellspacing=\"0\">
  <tr>
	<td><a href=\"http://www.siteexemplo.com.br/\"><img src=\"" . $EndServ . "/templante/midia.jpg\" width=\"550\" height=\"490\" border=\"0\" alt=\"\"></a></td>
  </tr>
</table>
</body>
</html>
", $headers);
	$contador_sleep ++;
}

}

OBS: este sleep pode acarretar no erro de tempo de execução excedido ;

coloque no inicio do seu arquivo.

 

set_time_limit(0);

//tempo de execução máxima inifita;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta mensagem significa que o MySQL perdeu a conexão com o Apache.

Compartilhar este post


Link para o post
Compartilhar em outros sites

if($_GET['btn'] == "gravar"){
$contador_sleep=0;
  $mostrar = mysql_query("SELECT CadVisit_antigo.EMail FROM CadVisit_antigo");
  if (!$mostrar){
  $resp = "Ocorreu algum erro";
}
  while($linha = mysql_fetch_array($mostrar, $c)) {
  if($contador_sleep==10){
	  $contador_sleep=0;
	  sleep(10);
	  //Sleep(10) espera 10 segundos antes de continuar a execução do Script.
	  //Usando ele.. quando a variável $contador_sleep atingir a quantia de 10.. ele zera a variável e espera 10 segundos antes de continuar o envio.
  }
  
  $EMail = $linha["EMail"];
	
	$EndServ = "http://www.siteeexemplo.com.br/";
	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\n";
	$headers .= "From: <emf@site.com.br>\n";
	$Assunto = "titulo!!!";

	mail($EMail, $Assunto, "<html>
<body bgcolor=\"#F0F0F0\">
<table width=\"550\" border=\"0\" align=center cellpadding=\"0\" cellspacing=\"0\">
  <tr>
	<td><a href=\"http://www.siteexemplo.com.br/\"><img src=\"" . $EndServ . "/templante/midia.jpg\" width=\"550\" height=\"490\" border=\"0\" alt=\"\"></a></td>
  </tr>
</table>
</body>
</html>
", $headers);
	$contador_sleep ++;
}

}

OBS: este sleep pode acarretar no erro de tempo de execução excedido ;

coloque no inicio do seu arquivo.

 

set_time_limit(0);

//tempo de execução máxima inifita;

 

Valeu Renato vou adaptar ao meu código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta mensagem significa que o MySQL perdeu a conexão com o Apache.

 

Marcio eu adaptando esta solução que o Renato sugerio, este erro tem menor chances de ocorrer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o erro ocorre entre apache e Mysql.. creio que você deve modificar suas configurações no PHP.INI

 

o meu PHP.ini para mySql está assim

 

[MSSQL]
; Allow or prevent persistent links.
mssql.allow_persistent = On

; Maximum number of persistent links.  -1 means no limit.
mssql.max_persistent = -1

; Maximum number of links (persistent+non persistent).  -1 means no limit.
mssql.max_links = -1

; Minimum error severity to display.
mssql.min_error_severity = 10

; Minimum message severity to display.
mssql.min_message_severity = 10

; Compatability mode with old versions of PHP 3.0.
mssql.compatability_mode = Off

; Connect timeout
;mssql.connect_timeout = 5

; Query timeout
;mssql.timeout = 60

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textsize = 4096

; Limits the number of records in each batch.  0 = all records in one batch.
;mssql.batchsize = 0

; Specify how datetime and datetim4 columns are returned
; On => Returns data converted to SQL server settings
; Off => Returns values as YYYY-MM-DD hh:mm:ss
mssql.datetimeconvert = Off

; Use NT authentication when connecting to the server
mssql.secure_connection = Off

; Specify max number of processes. -1 = library default
; msdlib defaults to 25
; FreeTDS defaults to 4096
;mssql.max_procs = -1

O erro pode ocorrer devido ao estouro do tempo de execução..

Alguns servidores fazem isto para que o usuário não fique com uma conexão aberta diretamente com o banco de dados.(motivos de segurança)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure a razão para o problema, leia isto: http://dev.mysql.com/doc/refman/4.1/pt/gone-away.html

 

Não é um problema comum, e você deve encontrar a razão para isto estar acontecendo e resolver o problema, ao invés de aplicar soluções ineficientes.

 

Nunca mexa no php.ini, nem no my.ini, nem no httpd.conf, nem em arquivo de configuração nenhum para fazer um sistema funcionar: isto é uma péssima prática, e pode causar incompatibilidade em sistemas que você desenvolva para a internet.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure a razão para o problema, leia isto: http://dev.mysql.com/doc/refman/4.1/pt/gone-away.html

 

Não é um problema comum, e você deve encontrar a razão para isto estar acontecendo e resolver o problema, ao invés de aplicar soluções ineficientes.

 

Nunca mexa no php.ini, nem no my.ini, nem no httpd.conf, nem em arquivo de configuração nenhum para fazer um sistema funcionar: isto é uma péssima prática, e pode causar incompatibilidade em sistemas que você desenvolva para a internet.

 

Obrigado Marcio, vou ler a referencia e procurar a solução para isto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique também o tempo que está demarando para a execuçaõ das querys, se a página estiver demorando para carregar, tem algo errado nas querys ou índices das tabelas. Pode ser uma razão também. Poste a conclusão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique também o tempo que está demarando para a execuçaõ das querys, se a página estiver demorando para carregar, tem algo errado nas querys ou índices das tabelas. Pode ser uma razão também. Poste a conclusão.

 

Ok Marcio assim que encontrar a solução eu coloco aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei o formato igual ao que o Renato sugeriu mas continua o mesmo erro

Marcio procurei aqui no codigo e não encontrei o erro entrei em contato onde hospedo o site agora estou aguardando uma resposta deles

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera onde hospedo o site me mandou resposta que esta mensagem é o tempo limite que o maximo permitido é de 60 segundos onde por motivos de segurança não pode ser alterados.

 

Não sei se tem haver isto poi ao disparar não demora nem 10 e já acusa a mensagem.

 

Será mais eficaz montar um "sistema" que encaminhei direto do meu pc sem a interferencia de onde hospedo?

 

Alguém tem algum sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode passar a URL pra eu verificar algumas coisas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode passar a URL pra eu verificar algumas coisas ?

Esta na area administrativa do site.. quer que eu encaminhe o arquivo para seu e-mail?

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.