Foros del Web » Programando para Internet » PHP »

apache se cierra al ejecutar un script php

Estas en el tema de apache se cierra al ejecutar un script php en el foro de PHP en Foros del Web. Esto me esta volviendo loco de verdad.... Por favor, disculpen que postee tanta cantidad de codigo, es que tengo un erroy muy raro y no ...
  #1 (permalink)  
Antiguo 15/06/2006, 15:32
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 15 años
Puntos: 0
apache se cierra al ejecutar un script php

Esto me esta volviendo loco de verdad....

Por favor, disculpen que postee tanta cantidad de codigo, es que tengo un erroy muy raro y no se que pueda ser.
Cuando hago correr la siguiente pagina, pasa bien por el case "", me deja ingresar los datos,pero cuando envio el formulario, aparece el cartel de windows
"Apache HTTP Server ha detectado un problema y debe cerrarse".

Lo fui frenando con exit y al parece al llegar a cualquiera de los
if (insertar.. (marqué con rojo)
es que tira dicha falla.
descarto que sea un error en la clase pq de la misma manera que la utilizo aca, la vengo utilizando en otros script. ademas, para probar, copié uno de los insertar y lo hice correr solo en otro archivo y funciona.

mil gracias por lo que puedan aportarme, necesito una mano por favor.

Código PHP:
<?require_once("negocios/clsFunciones.php"); //clase funciones
require_once("datos/clsConnection.php"); //clase funciones


$action=$_GET[action];

switch (
$action){
    case 
"":
    
?>
<form action="registrarPagosCCClientes2.php?action=1" method="POST">
<?
if($_POST[chkEfectivo]){
    echo 
"efectivo:<input type=\"text\" name=\"efectivo\"><br>";
}
if (
$_POST[chkCheques]){
    
$cantidad=$_POST[cantidadCheques];
    
?>
    <table width="70%"><tr><td>CHEQUES</td></tr>
    <?
    
for($i=1;$i<=$cantidad;$i++){?>
    
    <tr><td>Número:<input type="text" name="numeroCheque<?echo $i?>"></td>
    <td>Banco<input type="text" name="bancoCheque<?echo $i?>"></td>
    <td>Cuenta<input type="text" name="cuentaCheque<?echo $i?>"></td>
    <td>Razon<input type="text" name="razonCheque<?echo $i?>"></td>
    <td>FechaPago<input type="text" name="fechaCheque<?echo $i?>"></td>
    <td>Importe<input type="text" name="importeCheque<?echo $i?>"></td>
    
    <input type="hidden" name="cantidad" value="<?echo $cantidad;?>">
    <input type="hidden" name="numidFactura" value="<?echo $_POST[numidFactura];?>">
    <input type="hidden" name="numidCliente" value="<?echo $_POST[numidCliente];?>">
    <input type="hidden" name="cantidad" value="<?echo $cantidad;?>">
        </tr>
        
        <?
    
}
?>
<tr><td><input type="submit" value="Ingresar Pago"></td></tr>
</table></form>
<?    
}
break;
    case 
"1":
        
        
        
//*********insertar en tabla facturas************//
        
function insertar($table,$fieldList,$fieldValues,$objConn){

        
$objFunc=new funciones();
        
$objConn->LetTable($table);
        
$objConn->LetFieldList($fieldList);
        
$objConn->LetFieldValues($fieldValues);
        
        
$objConn->conectar();        
        if (
$objConn->insertar()):
            
$insertadotrue;
        else:
            
$insertado=false;
        endif;            
        return 
$insertado;
    }


    
//pasarle los parametros para modificar stock
    
function modificar($table,$id,$fieldList,$fieldValues,$objConn){
            
$objConn->LetTable($table);
            
$objConn->LetFieldList($fieldList);
            
$objConn->LetFieldValues($fieldValues);
            
$objConn->LetWhere("where id=".$id);
            
            
            
$objConn->conectar();
            if (
$objConn->modificar()==false):
                echo 
"ocurrió un error al intentar comprometer stock";
            endif;
    }
            
        
$objFunc=new funciones();
        
$objConn=new conectarMySQL("127.0.1.1","big_User","tarlipes","user");
        
$objConn->conectar();
    
    
    
$idCliente=$_POST["numidCliente"];
    
$idFactura=$_POST["numidFactura"];
    
    
//agrego elrecibo

    
    
$numeroRecibo=$objFunc->devuelveUnValor("tb_ultimorecibo","id","1","ultimoRecibo")+1;
    
//aumentarrecibo en 1    
    
    
$fieldList="idFactura,idCliente,numeroRecibo";
        
$fieldValues="$idFactura,$idCliente,$numeroRecibo";
        
        
        
[
COLOR="Red"]    if (insertar("tb_recibosencabezado",$fieldList,$fieldValues,$objConn)==false){
            Echo 
"ocurrió un error al insertar pedido";
            exit;
        }[/
COLOR]        
        
    
//tomo el ultimo id del recibo
    
$query="select id from tb_recibosEncabezado order by id desc";
    
$objConn->consultar($query);
    if(
$row=$objConn->obtendatos()) {
    
$idReciboEncabezado=$row[id];
    }
    
//tomolas variables del post    

    
        
$efectivo=$_POST["efectivo"];
        
        if (
$_POST[efectivo]!=""){
        
//decremento el monto efectivo de lo pendiente de asignacion    
        
$totalRecibo=$efectivo;
        
        
//agregodetalles reCibo por la parde del efectivo
        
$fieldList="idReciboEncabezado,tipoPago,idDocumento,importe";
        
$fieldValues="$idReciboEncabezado,'ef','0',$efectivo";
        
        if (
insertar("tb_recibosDetalle",$fieldList,$fieldValues,$objConn)==false){
            Echo 
"ocurrió un error al insertar pedido";
            exit;
        }
            
        
        }
        
        
$numidFactura=$_POST[numidFactura];
        
$numidCliente=$_POST[numidCliente];
        
//registro uno a uno los cheques en la tabla de cheques
        
        
for($i=1;$i<=$_POST["cantidad"];$i++){
        
            
            
$numeroCheque=$_POST[numeroCheque.$i];
            
$bancoCheque=$_POST[bancoCheque.$i];
            
$cuentaCheque=$_POST[cuentaCheque.$i];
            
$razonCheque=$_POST[numeroCheque.$i];
            
$fechaCheque=$_POST[fechaCheque.$i];
            
$importeCheque=$_POST[importeCheque.$i];
            
            
$totalRecibo+=$importeCheque;


        
//regitro cheques
        
$fieldList="idFactura,idCliente,numeroCheque,bancoCheque,cuentaCheque,razonCheque,fechaCheque,importeCheque";
        
$fieldValues="$idFactura,$idCliente,'$numeroCheque','$bancoCheque','$cuentaCheque','$razonCheque','$fechaCheque',$importeCheque";
//        
        
if (insertar("tb_registrocheques",$fieldList,$fieldValues,$objConn)==false){
            Echo 
"ocurrió un error al insertar pedido";
            exit;
        }
        
        
//obtengo ultimo idCheque
        
$query="select id from tb_registrocheques order by id desc";
    
$objConn->consultar($query);
    if(
$row=$objConn->obtendatos()) {
    
$idCheque=$row[id];
    }
        
//registro detalles del recibo
        
        
$fieldList="idReciboEncabezado,tipoPago,idDocumento,importe";
        
$fieldValues="$idReciboEncabezado,'ch','$idCheque',$importeCheque";
        
        if (
insertar("tb_recibosdetalle",$fieldList,$fieldValues,$objConn)==false){
            Echo 
"ocurrió un error al insertar pedido";
            exit;
        }
            
        
//decremento el saldo pendiente de acreditar en facturas
        
        
        
}
            
modificar("tb_facturasencabezado",$idFactura,"numeroFactura","pendienteAcreditar".-$totalRecibo,$objConn);
        
        

     
//actualizo  cuenta corriente clientes
     
$fieldList="idCliente,documento,idDocumento,adocumento,aidDocumento,haber";
        
$fieldValues="$idCliente,'rc',$numeroRecibo,'fc',$numeroFactura,$totalRecibo'";
                
        if (
insertar("tb_cuentacorrienteclientes",$fieldList,$fieldValues,$objConn)==false){
            Echo 
"ocurrió un error al insertar cc";
            exit;
        }

break;}
__________________
Juan Pablo

Última edición por tarlipes; 15/06/2006 a las 15:51
  #2 (permalink)  
Antiguo 15/06/2006, 16:01
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 15 años
Puntos: 0
Help Pleasee

este es el archivo que creé con el insert solo, tiré como verán un ciclo de 1000 para exagerar la cosa y anda muy bien.
Pero en el contexto de la otra pagina falla.
Código PHP:
<?require_once("negocios/clsFunciones.php"); //clase funciones
require_once("datos/clsConnection.php"); //clase funciones

function insertar($table,$fieldList,$fieldValues,$objConn){

        
$objFunc=new funciones();
        
$objConn->LetTable($table);
        
$objConn->LetFieldList($fieldList);
        
$objConn->LetFieldValues($fieldValues);
        
        
$objConn->conectar();        
        if (
$objConn->insertar()):
            
$insertadotrue;
        else:
            
$insertado=false;
        endif;            
        return 
$insertado;
    }



    
$objFunc=new funciones();
        
$objConn=new conectarMySQL("127.0.1.1","big_User","tarlipes","CERAMICA");
        
$objConn->conectar();
        
        for(
$i=1;$i<1000;$i++){
    
$idFactura="1";
$idCliente="2";
$numeroRecibo="4";

$fieldList="idFactura,idCliente,numeroRecibo";
        
$fieldValues="$idFactura,$idCliente,$numeroRecibo";
        
        
//        
    
if (insertar("tb_recibosencabezado",$fieldList,$fieldValues,$objConn)==false){
            Echo 
"ocurrió un error al insertar pedido";
            exit;
        }
        }
        
        
        
?>
__________________
Juan Pablo

Última edición por Cluster; 16/06/2006 a las 15:42
  #3 (permalink)  
Antiguo 16/06/2006, 08:29
 
Fecha de Ingreso: abril-2006
Mensajes: 62
Antigüedad: 11 años, 7 meses
Puntos: 0
Creo que deberías seguir depurando dentro de la función insertar, en el contexto que te da error. Hasta encontrar cual de sus líneas es la problemática.
__________________
Guish
  #4 (permalink)  
Antiguo 16/06/2006, 10:41
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 15 años
Puntos: 0
Gracias por la respuesta.
Hice lo que me dijiste, segui cada paso y he llegado a la conclusión de que cada vez se menos de que se trata el error.

Ya que ahora noto que en ocasiones funciona todo bien, por ejemplo, laprimera vez que lo ejecuto,funciona, le doy actualizar, funciona nuevamente, a la tercera tira el error.
en otras circunstancias de una ya aparece el cartel.
Podria ser que se esté saturando algo, como ser la memoria por las conecciones?

Noté tambien que el registro lo inserta independientemente de que tire o no el error.

Paso la parte del insert de la clase conecciones para ver si notan algo raro.


Código PHP:
function insertar()
    {
   

   
$RS "INSERT INTO ".$this->tableName" (".$this->fieldList.") VALUES (".$this->fieldValues.")";
 
        
    
    
$result mysql_query($RS,$this->enlace) or die($RS mysql_error());
  
    return (
$result == DB_OK) ? TRUE FALSE;
    
    } 

saludos y muchas gracias
__________________
Juan Pablo
  #5 (permalink)  
Antiguo 16/06/2006, 13:54
 
Fecha de Ingreso: abril-2006
Mensajes: 62
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta

Estás haciendo algo "intensivo" como para se sature?

Tenés la última versión de Apache?

Te fijaste en el registro de errores de Apache?
__________________
Guish
  #6 (permalink)  
Antiguo 16/06/2006, 14:09
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 15 años
Puntos: 0
Lo que hace es lo que postié y no lo considero intensivo.

no habia visto lo del log de apache. Me tira lo siguiente:

[Fri Jun 16 16:10:16 2006] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Fri Jun 16 16:10:18 2006] [notice] Apache/2.0.53 (Win32) PHP/5.0.3 configured -- resuming normal operations
[Fri Jun 16 16:10:18 2006] [notice] Server built: Feb 10 2005 06:11:34
[Fri Jun 16 16:10:18 2006] [notice] Parent: Created child process 5620
[Fri Jun 16 16:10:22 2006] [notice] Child 5620: Child process is running
[Fri Jun 16 16:10:22 2006] [notice] Child 5620: Acquired the start mutex.
[Fri Jun 16 16:10:22 2006] [notice] Child 5620: Starting 250 worker threads.
[Fri Jun 16 16:10:31 2006] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Fri Jun 16 16:10:33 2006] [notice] Apache/2.0.53 (Win32) PHP/5.0.3 configured -- resuming normal operations
[Fri Jun 16 16:10:33 2006] [notice] Server built: Feb 10 2005 06:11:34
[Fri Jun 16 16:10:33 2006] [notice] Parent: Created child process 5376
[Fri Jun 16 16:10:34 2006] [notice] Child 5376: Child process is running
[Fri Jun 16 16:10:34 2006] [notice] Child 5376: Acquired the start mutex.
[Fri Jun 16 16:10:34 2006] [notice] Child 5376: Starting 250 worker threads.
__________________
Juan Pablo
  #7 (permalink)  
Antiguo 16/06/2006, 16:53
 
Fecha de Ingreso: abril-2006
Mensajes: 62
Antigüedad: 11 años, 7 meses
Puntos: 0
Cita:
Parent: child process exited with status 3221225477 -- Restarting.
En otras ocasiones este código de error fue generado por bugs en ciertas versiones de Apache.

Te recomiendo que pruebes actualizando Apache (va por la 2.2.2)

Después contanos.
__________________
Guish
  #8 (permalink)  
Antiguo 16/06/2006, 17:02
 
Fecha de Ingreso: abril-2006
Mensajes: 62
Antigüedad: 11 años, 7 meses
Puntos: 0
Perdón, no era por un bug de Apache, sino de PHP. Deberías probar actualizando PHP.
__________________
Guish
  #9 (permalink)  
Antiguo 20/06/2006, 14:14
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 15 años
Puntos: 0
Tengo php 5.

Al parecer el problema ocurre cuando le paso por parámetro a la función, la variable objeto $objconn

en lugar de
function insertar($table,$fieldList,$fieldValues,$objConn){
.......
}

escribí la funcion
function insertar($table,$fieldList,$fieldValues){
e instancié adentro de la funcion el objeto de coneccion
$objConn=new conectarMySQL("127.0.1.1","big_User","tarlipes","C ERAMICA");
.......
}

y ahora funciona.

es algo extraño, no debería suceder.
o si?

saludos y gracias Guish por las respuestas
__________________
Juan Pablo
  #10 (permalink)  
Antiguo 20/06/2006, 15:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 98
Antigüedad: 12 años, 10 meses
Puntos: 0
Wooow, hace un par de años creo tuve el mismo problema, siempre se cerraba el apache 2, ya sea probando con php 4 o 5, y sí, precisamente es el mismo error que tuve yo, que de paso no pude solucionarlo como hubiera querido, pero bueno al final instalé el php como CGI no como módulo y el apache ya no se cerraba, recuerdo que el servidor tenía windows 2003. Y sí... yo enviaba el $objconn por parámetro, pero era parte de mis funciones así que no lo cambié.

Con linux nunca se cierra el apache, bueno como repito fue hace años, no sé si habrán corregido ese error en una actualización del apache, pero en ese tiempo no había nada de información y estaba loco como tú, algunos me decían que era el código, los bucles, pero todo estaba oOK, es un "COMPLETO BUG" del apache con windows.

Me gustaría saber si alguien conoce cómo solucionar ese problema, sin necesidad de instalar el php como CGI.
Me avisas cómo te fue.

Última edición por luislarc; 20/06/2006 a las 17:48
  #11 (permalink)  
Antiguo 21/06/2006, 08:02
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 15 años
Puntos: 0
veamos si alguien sabe que puede estar pasando. Seguramente será como vos decis, un bug del apache, pq no veo diferencia, salvo por la prolijidad y el no repetir codigo, entre declarar el objeto dentro de la funcion o fuera y pasarle el parametro.

saludos
__________________
Juan Pablo
  #12 (permalink)  
Antiguo 05/07/2006, 18:11
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 971
Antigüedad: 13 años, 7 meses
Puntos: 2
puse las funciones modificar e insertar fuera del case y ahora funciona. no tengo idea por que, pero ya no se cuelga.

saludos
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 19:49.