Foros del Web » Programando para Internet » PHP »

mssql_execute me bota error

Estas en el tema de mssql_execute me bota error en el foro de PHP en Foros del Web. Buenos días: Tengo un problema y espero me puedan ayudar. al ejecutar un Stored Procedure de larga duración aparentemente se corta la conexión entre la ...
  #1 (permalink)  
Antiguo 08/03/2011, 08:54
 
Fecha de Ingreso: febrero-2011
Ubicación: Lima
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta mssql_execute me bota error

Buenos días:
Tengo un problema y espero me puedan ayudar.
al ejecutar un Stored Procedure de larga duración aparentemente se corta la conexión entre la web y la base de datos. El SP continúa ejecutándose pero parece como si fallara la conexión con la web a los 2 minutos exactamente, pues me aparecen los siguientes warning:

- Warning: mssql_execute() [function.mssql-execute]: SQL Server connection timed out. (severity 6) in…..
- Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in…..
- Warning: mssql_execute() [function.mssql-execute]: DBPROCESS is dead or not enabled. (severity 1) in…..

Los SP que necesito ejecutar duran no menos de 5 minutos y ya he cambiado algunos parámetros del php.ini tales como max_execution_time e incluso mssql.connect_timeout y mssql.timeout (aunque éstas no creo que tengan algo que ver). Los he puesto en 1800 segundos (aunque no sea lo ideal) y nada.
No sé si a alguien le ha pasado lo mismo o sabe si hay algo que no estoy considerando, algún parámetro de php o del SQL Server¿¿??
El código funciona pues con un Stored de menos de 1 minuto funciona a la perfección.
Trabajo con PHP 5.2.3 y SQL Server 2008 en Windows XP.
Agradezco su ayuda,

Saludos
  #2 (permalink)  
Antiguo 08/03/2011, 23:06
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: mssql_execute me bota error

Con que funcion haces la conexion a SQL ??

Saludos
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 09/03/2011, 09:01
 
Fecha de Ingreso: febrero-2011
Ubicación: Lima
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: mssql_execute me bota error

Cita:
Iniciado por ;
Con que funcion haces la conexion a SQL ??

Saludos
Hola! Gracias por responder, el proyecto ya estaba empezado y se utiliza una clase Conexión.. la función conectar se compone de la siguiente manera (si es que a esta parte te refieres exactamente):

$this->link=mssql_connect($this->servidor, $this->usuario, $this->password);
$booleano = mssql_select_db($this->base_datos);

igual incluyo el código a continuación, como un poco de contexto

Código PHP:
//AQUI SE LLAMA AL EJECUTAR PROCEDURE EN PAGINA1.PHP

$link Conexion::getInstance();
$gestorProceso = new GestorProceso($link);
$gestorProceso->executeSP($pCodigo);    

//GESTORPROCESOS.PHP
class GestorProceso
{   
    
// ATRIBUTO PARA LA CONEXION
    
private $link;
    
    
// FUNCION PARA EJECUTAR EL STORED PROCEDURE (SP)
    
public function executeSP($pCodigo){
            
        
// conseguimos el nombre del stored procedure
            
$queryString="SELECT sp FROM sp_x_Proceso
            where codigo='$pCodigo'"
;
            
            
$result $this->link->ejecutar($queryString);
            if(!
$result) {              
                die(
'MSSQL error: ' mssql_get_last_message());}
            
            
$numFilas$this->link->obt_numFilas($result);    
            if(
$numFilas == 1){ 
                        
                
$row=$this->link->obtener_fila($result,0);
                
$nombreSP $row["sp"];
                
$this->link->limpiaRS();

                
$sp $this->link->iniciaSP($nombreSP);
                echo 
"Hora Inicio SP: ".date('h:i:s')."<br>";
                                        
                
$result2 $this->link->ejecutaSP($sp);
// aqui es donde cae en el error.. mas abajo en la clase Conexion esta definido "ejecutaSP"
                
if(!$result2)
                    {    
                        echo 
'error sp MSQL error: 'mssql_get_last_message() . "<br/>";        
                        echo 
"        Hora de corte: ".date('h:i:s') . "<br>";
                    }
                else { 
                        echo 
"SP corrio exitosamente ";
                        echo 
"        Hora final: ".date('h:i:s') . "<br>";
                }
            }
                        
            
$this->link->limpiaRS();
        }
        
}

//CONEXION.PHP
class Conexion
{
    
    public static function 
getInstance(){
        if (!(
self::$_instance instanceof self)){
            
self::$_instance=new self();
        }
        return 
self::$_instance;
    }
    
    private function 
__construct(){
        
$this->conectar();
    }

    private function 
conectar(){
        
$this->link=mssql_connect($this->servidor$this->usuario$this->password);
        
$booleano mssql_select_db($this->base_datos);
    }
    
    public function 
ejecutar($sql){       
        
$this->stmt=mssql_query($sql,$this->link);       
        return 
$this->stmt;    
    }   
        
    public function 
iniciaSP($nombreSP){
        
$this->sp mssql_init($nombreSP,$this->link); 
        return 
$this->sp;
    }
        
    public function 
ejecutaSP($sp){
        
$this->sp $sp;
        
set_time_limit(0);
        
$this->stmt mssql_execute($this->sp); 
        return     
$this->stmt;
    }



gracias por tratar de ayudar, si no dejo algo claro avisenme porfavor. he estado buscando y sigo sin dar con la forma correcta acerca de ejecutar SP de larga duración.

Saludos
  #4 (permalink)  
Antiguo 09/03/2011, 10:12
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: mssql_execute me bota error

Lo que pasa es que hace poco tiempo atras me paso que al actualizar la version de PHP en un servidor, las consultas sql me arrojaban un error por usar mssql_init() y mssql_bind() (que era la manera de ejecutar mis sp) Para solucionar esto solo puse un mssql_query() con la llamada al procedimiento y los parametros directamente ahi.

De todas maneras pregunte como te conectabas dado que existe un metodo para conectarse y hacer una consulta y tambien existe una manera de conectarse de manera persistente... en una de esas esa conexion es la que necesitas.

Trata de cambiar el mssql_connect por mssql_pconnect() y ve si resulta.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 09/03/2011, 14:40
 
Fecha de Ingreso: febrero-2011
Ubicación: Lima
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: mssql_execute me bota error

ah ok gracias!!.. buen dato.

y no te surgió ningún problema ejecutando el SP con mssql_query?

Y acerca del mssql_pconnect, voy a leer un poco acerca de como funciona y su uso.. supongo que será para que una conexión no se pierda fácilmente o para recuperar una conexión perdida.

Gracias por el interés y la respuesta, probablemente lo aplique mañana.
Seguiré informando como va el desarrollo de este problema

Saludos,

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:53.