estou usando um sistema de envio de e-mail e agora ele apresentou esse erro
FastCGI Error
The FastCGI Handler was unable to process the request.
Error Details:
The FastCGI process exceeded configured request timeout
Error Number: 258 (0x80070102).
Error Description: The wait operation timed out.
HTTP Error 500 - Server Error.
Internet Information Services (IIS)
O código q esta enviando email e esse
[codebox]<?
/* WEB - TOOLS - www.web-tools.kit.net [ Caso essa linha seja apagada
o sistema irá parar de funcionar] */
ini_set("max_execution_time",0);
$username = $_COOKIE['username'];
if ($username){
$autor = $_COOKIE['username'];
include "config.php";
$soma = mysql_query("SELECT * FROM $tb2 where autor='$autor' ORDER BY posts DESC");
if (!$soma){
echo "Não foi possivel a consulta";
}
else{
while ($reg = mysql_fetch_array($soma)){
$numero = $reg['posts'];
}
global $numero;
$maisum=1;
$novonumero= $numero + $maisum;
$novosql = mysql_query("UPDATE $tb2 SET posts='$novonumero' where autor='$autor'");
$assunto = $_POST['titulo'];
$formatacao = $_POST['formatacao'];
$msg = $_POST['msg'];
if ($formatacao==html){
include "config.php";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $email_admin<$autor_email>";
$sql = mysql_query("SELECT * FROM $tb3");
while ($reg = mysql_fetch_array($sql)){
global $assunto;
$emails = $reg['email'];
$msg = stripslashes($msg);
$msg = str_replace('"',"", $msg);
mail("$emails","$assunto","$msg","$headers");
flush();
}
echo "<script>alert(\"Sua Mensagem foi enviada com sucesso.\")</script>";
echo "<meta http-equiv='refresh' content='0;URL=Msg_form.php'>";
}
if ($formatacao==texto){
include "config.php";
$headers = "From: $email_admin<$autor_email>";
$sql2 = mysql_query("SELECT * FROM $tb3");
global $assunto;
while ($reg1 = mysql_fetch_array($sql2)){
$emails = $reg1['email'];
mail("$emails","$assunto","$msg","$headers");
}
echo "<script>alert(\"Sua Mensagem foi enviada com sucesso.\")</script>";
echo "<meta http-equiv='refresh' content='0;URL=Msg_form.php'>";
}
}
}
?>
[/codebox]
Socorro ae galera

Erro Fast Cgi
Started By webmastermichael, 22/01/2009, 10:31
1 reply to this topic
#1
Posted 22/01/2009, 10:31
#2
Posted 18/06/2009, 18:39
O problema do FastCGI, ocorre devido a não conclusão do envio dos dados dentro de 90 segundos, que é o timeout do FastCGI.
Só uma outra dica:
A linha: /* WEB - TOOLS - www.web-tools.kit.net [ Caso essa linha seja apagada o sistema irá parar de funcionar] */
Pode sim ser apagada
, ela está declarada!
Olha...
Tive uma ideia pra resolver teu problema...
Acho que o erro ocorre na consulta do banco: ela deve retornar muitos resultados, que eleva o tempo de processamento, fazendo estourar os 90s e dar o erro do FastCGI timeout!
Pensei então em fragmentar tua consulta...
O codigo faz uma consulta limitada, processa, se terminou avisa ao usuario e volta pro form se nao da um refresh nele mesmo e inicia a nova consulta de onde parou...
Seria tipo uma "página recursiva"...
Acho que assim resolve pelomenos o timeout do FastCGI!
Testa ai!
Não pude testar, pois tem uns includes ai que eu n tenho o arquivo, além do banco é claro.
Mas faz umas adaptações:
1- Na session 'qtd' é o limite do retorno da consulta ao banco, eu setei 100, bem pouco so pra teste, mas vc pode elevar depois pra evitar ecessivos refresh! É so trocar la o valor da variavel $qtdDeConsultas!
2- Arruma ai o codigo pra dar refresh nele mesmo, seta a URL certa que eu n sei nem o nome do arquivo php!!! Ta comentado la o local pra arrumar!!
Quando da o refresh nele n precisa passar os posts novamente, guardei tudo na session!
Só uma outra dica:
A linha: /* WEB - TOOLS - www.web-tools.kit.net [ Caso essa linha seja apagada o sistema irá parar de funcionar] */
Pode sim ser apagada

Olha...
Tive uma ideia pra resolver teu problema...
Acho que o erro ocorre na consulta do banco: ela deve retornar muitos resultados, que eleva o tempo de processamento, fazendo estourar os 90s e dar o erro do FastCGI timeout!
Pensei então em fragmentar tua consulta...
O codigo faz uma consulta limitada, processa, se terminou avisa ao usuario e volta pro form se nao da um refresh nele mesmo e inicia a nova consulta de onde parou...
Seria tipo uma "página recursiva"...

Acho que assim resolve pelomenos o timeout do FastCGI!
Testa ai!
Não pude testar, pois tem uns includes ai que eu n tenho o arquivo, além do banco é claro.
Mas faz umas adaptações:
1- Na session 'qtd' é o limite do retorno da consulta ao banco, eu setei 100, bem pouco so pra teste, mas vc pode elevar depois pra evitar ecessivos refresh! É so trocar la o valor da variavel $qtdDeConsultas!
2- Arruma ai o codigo pra dar refresh nele mesmo, seta a URL certa que eu n sei nem o nome do arquivo php!!! Ta comentado la o local pra arrumar!!
Quando da o refresh nele n precisa passar os posts novamente, guardei tudo na session!
<?ini_set("max_execution_time",0);$username = $_COOKIE['username'];if ($username){ $autor = $_COOKIE['username']; include "config.php"; $soma = mysql_query("SELECT * FROM $tb2 where autor='$autor' ORDER BY posts DESC"); if (!$soma){ echo "Não foi possivel a consulta"; } else{ $qtd = (mysql_fetch_array($soma)); mysql_query('UPDATE '.$tb2.' SET posts="'.++$qtd.'" where autor="'.$autor.'"'); $assunto = $_POST['titulo']; $formatacao = $_POST['formatacao']; $msg = $_POST['msg']; if(!$assunto){ $assunto=$_SESSION['assunto']; $formatacao = $_SESSION['formatacao']; $msg = $_SESSION['msg']; } $_SESSION['assunto']=$assunto; $_SESSION['formatacao']=$formatacao; $_SESSION['msg']=$msg; $qtdDeConsultas = 100; //Pra elevar o numero de consultas, coloque um numero maior if(!isset($_SESSION['IniConsulta'])){ $_SESSION['IniConsulta']=0; $_SESSION['qtd']=$qtdDeConsultas; }else{ $_SESSION['IniConsulta']=$_SESSION['IniConsulta']+$_SESSION['qtd']+1; $_SESSION['qtd']=$_SESSION['qtd']+$qtdDeConsultas; } $limit = ' LIMIT '.$_SESSION['IniConsulta'].','.$_SESSION['qtd']; $cont=0; if ($formatacao=="html"){ include "config.php"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "From: $email_admin<$autor_email>"; $sql = mysql_query('SELECT * FROM '.$tb3.$limit); while ($reg = mysql_fetch_array($sql)){ $cont++; global $assunto; $emails = $reg['email']; $msg = stripslashes($msg); $msg = str_replace('"',"", $msg); mail("$emails","$assunto","$msg","$headers"); flush(); } } if ($formatacao=="texto"){ include "config.php"; $headers = "From: $email_admin<$autor_email>"; $sql2 = mysql_query('SELECT * FROM'.$tb3.$limit); global $assunto; while ($reg1 = mysql_fetch_array($sql2)){ $cont++; $emails = $reg1['email']; mail("$emails","$assunto","$msg","$headers"); } } if($cont<=100){ /* ATENÇÃO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * DA UM REFRESH NESSA MESMA PAGINA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * NÃO SEI A URL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ }else{ unset($_SESSION['assunto'],$_SESSION['formatacao'],$_SESSION['msg'],$_SESSION['IniConsulta'],$_SESSION['qtd']); echo "<script>alert(\"Sua Mensagem foi enviada com sucesso.\")</script>"; echo "<meta http-equiv='refresh' content='0;URL=Msg_form.php'>"; } }}?>
Edição feita por: Fábio Sciubba, 18/06/2009, 18:42.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)