Jump to content


Photo

Erro Fast Cgi


  • Faça o login para participar
1 reply to this topic

#1 webmastermichael

webmastermichael

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 22/01/2009, 10:31

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

#2 Fábio Sciubba

Fábio Sciubba

    Turista

  • Usuários
  • 30 posts
  • Sexo:Não informado

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 :D , 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"... :D
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 "&lt;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)

IPB Skin By Virteq