+ Responder ao Tópico



  1. Boa noite galera!
    Tenho uma dúvida relacionada ao tempo de espera para execução de script no PHP, mas como sou bem verde no assunto, posto aqui a minha exemplificação:
    Utilizo o MSN-Proxy para controle do MSN nos clientes, funciona que é uma beleza, porém, quando passa algum tempo, de tanto chat armazenado nas tabelas do MySQL, começa a demorar para retornar o resultado das queries que o php envia ao banco. Relato algo em torno de 30 segundos até 5 minutos. Então fiz o seguinte:

    - Editar php.ini e modificar max_execution_time e max_input_time:
    Alterei ambos pra 3600 pra dar uma boa margem e nada... Acredito que não surta efeito mesmo pois o script espera o resultado do banco e essas variáveis dizem respeito ao tempo de execução dos scripts, estou certo?

    - Editar o .php e incluir stream_set_timeout("<ENDEREÇO DE CONEXÃO", $tempo);
    Também não deu, apesar de ter visto 1001 manhas pra usar esta opção, tentei todas e nada feito.

    Não sei se pode ou não, mas vou postar todo o php de autoria do Luiz Otavio O Souza <loos.br [at] gmail [dot] com>:

    <?php
    /*
    * Copyright (c) 2004-2009 Luiz Otavio O Souza <loos.br [at] gmail [dot] com>
    *
    * Permission to use, copy, modify, and distribute this software for any
    * purpose with or without fee is hereby granted, provided that the above
    * copyright notice and this permission notice appear in all copies.
    *
    * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
    * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
    * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
    * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    */
    /*
    * $Id: chat.php 102 2009-02-05 18:37:40Z loos-br $
    */
    require('mysql.inc.php');
    require('header.inc.php');
    ?>
    <body bgcolor="#FFFFFF">
    <div align=center>
    <a href="javascript: window.close()">Fechar a janela</a><br><br>
    <table border=0 width=500
    style="border-color: gray; border-style: solid; border-width: 1;">
    <tr>
    <td align="center" bgcolor="#EBEBEB" width=120>Data</td>
    <td align="center" bgcolor="#EBEBEB" width=160>De</td>
    <td align="center" bgcolor="#EBEBEB" width=160>Para</td>
    <td align="center" bgcolor="#EBEBEB">Visualizar</td>
    </tr>
    <?php
    $sql = "SELECT DISTINCT sb_id, date, display_name, type ";
    $sql .= "FROM log WHERE ";
    $sql .= "email = '".$_REQUEST['email']."' AND (type = 'start' OR type = 'join')";
    $sql .= "ORDER BY date DESC ";
    $rs = mysql_query($sql, $mysql);
    while($rs && ($row = mysql_fetch_array($rs))) {
    $reset = array("sb_id", "date", "display_name", "type");
    for ($i = 0; $i < count($reset); $i++) {
    if (!isset($row[$reset[$i]]))
    $row[$reset[$i]] = "";
    }
    $sql = "SELECT email, display_name FROM log WHERE ";
    $sql .= "sb_id = ".$row['sb_id']." AND type = 'join' ";
    $rsTo = mysql_query($sql, $mysql);
    ?>
    <tr>
    <td bgcolor="#EBEBEB" align="center"><?php echo $row['date'] ?></td>
    <td bgcolor="#EBEBEB">
    <?php
    if ($row['type'] == 'join') {
    $sql = "SELECT email, display_name FROM log WHERE ";
    $sql .= "sb_id =". $row['sb_id']." AND type = 'start'";
    $rsStart = mysql_query($sql, $mysql);
    $rowStart = mysql_fetch_array($rsStart);
    $reset = array("email", "display_name");
    for ($i = 0; $i < count($reset); $i++) {
    if (!isset($rowStart[$reset[$i]]))
    $rowStart[$reset[$i]] = "";
    }
    ?>
    <a href="chat-to.php?email=<?php echo $_REQUEST['email'] ?>&to=<?php echo $rowStart['email'] ?>&back=on"><?php echo $rowStart['display_name'] ?></a></td>
    <?php
    } else {
    echo $row['display_name']."</td>";
    }
    ?>
    <td bgcolor="#EBEBEB">
    <?php
    while($rsTo && ($rowTo = mysql_fetch_array($rsTo))) {
    $reset = array("email", "display_name");
    for ($i = 0; $i < count($reset); $i++) {
    if (!isset($rowTo[$reset[$i]]))
    $rowTo[$reset[$i]] = "";
    }
    if ($rowTo['email'] == $_REQUEST['email']) {
    echo $rowTo['display_name']." <BR>\n";
    } else {
    echo "<a href=\"chat-to.php?email=".$_REQUEST['email']."&to=".$rowTo['email']."&back=on\">".$rowTo['display_name']."</a><BR>\n";
    }
    }
    ?>
    </td>
    <td align="center" bgcolor="#EBEBEB">
    <a href="view.php?sb_id=<?php echo $row['sb_id'] ?>&back=on"><img src="imagens/send_im.gif" border=0></a></td>
    </tr>
    <?php
    }
    mysql_close($mysql);
    ?>
    </table><br>
    </div>
    </body>
    </html>


    Alguém teria a boa alma de me dizer o que posso fazer neste código para que o PHP espere, não importa o quanto demorar, o resultado da consulta ao MySQL???

    Muito grato e grande abraço à todos!!!
    Última edição por glaucioklipel; 19-03-2010 às 18:03. Razão: Editado pra não marcar com o e-mail do cara!

  2. set_time_limit(0);

    espera eterna.. coloca no inicio do codigo php



  3. Valeu Alexandre, mas já tentei essa também, achei que fosse o time limit porém não é... Vi no manual do PHP que o set_time_limit funciona somente para execução do script em si mas não funciona quando é o banco de dados que demora a responder.

    Na verdade cara o problema está no apache, pelo menos isso eu descobri hehehe. Testei em 2 slacks com o mesmo .conf e está esperando normalmente... Porém em 2 debians dá 1 minuto e meio mais ou menos e dá "A página não pode ser exibida". Tentei setar o Timeout do Apache também pra um valor maior no Debian e não deu...

    Sei lá cara, me sinto andando em círculos hehehehe...






Tópicos Similares

  1. Execução de script após reboot
    Por maleficavatar no fórum Redes
    Respostas: 6
    Último Post: 05-09-2007, 20:43
  2. tempo de execução de processo
    Por whinston no fórum Servidores de Rede
    Respostas: 0
    Último Post: 18-05-2005, 10:05
  3. Script p/ execução de comando
    Por EduLucas no fórum Linguagens de Programação
    Respostas: 1
    Último Post: 30-03-2005, 10:31
  4. EXECUÇÃO DE SOFTWARE JAVA FEITO EM WINDOWS, NO LINUX !!
    Por fjbvnlinux no fórum Linguagens de Programação
    Respostas: 1
    Último Post: 18-04-2004, 18:02
  5. Execução de Cron
    Por luiz_nando no fórum Linguagens de Programação
    Respostas: 4
    Último Post: 30-04-2003, 10:08

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L