Foros del Web » Programando para Internet » PHP »

error php y servidor web

Estas en el tema de error php y servidor web en el foro de PHP en Foros del Web. Hola de antemano muchas gracias por su ayuda, lo que sucede es que tengo un error dentro de mi servidor, que no se si se ...
  #1 (permalink)  
Antiguo 13/02/2013, 14:09
 
Fecha de Ingreso: febrero-2013
Mensajes: 11
Antigüedad: 11 años, 2 meses
Puntos: 0
Exclamación error php y servidor web

Hola de antemano muchas gracias por su ayuda, lo que sucede es que tengo un error dentro de mi servidor, que no se si se produce por mi archivo o por el servidor el error es el siguiente:

Código:
 [Wed Feb 13 12:57:42 2013] [error] [client 189.134.121.185] Script timed out before returning headers: Socket.php
El servidor es de pago pero no es propio es compartido así que no tengo forma de configurar mas.

Alguna sugerencia de que puede ser lo que pasa, el archivo es un socket que estoy tratando de instalar en el servidor el código por si sirve de algo es el siguiente:

Código PHP:
<?php

/* Permitir que el script permanezca en espera de conexiones. */
set_time_limit(0);
/*socket_create=>Crea y devuelve un recurso socket*/
$socket=socket_create(AF_INET,SOCK_STREAM,0);
socket_set_option($socketSOL_SOCKET,SO_REUSEADDR1);
/*0 - acepta cualquier conexion de cualquier ip*/
$direccion=0
/*para el puerto no podemos utilizar numeros menores a 1025
/debido a que ya estan reservados para aplicaciones del sistema como correo electronico etc.*/
$puerto=5001;
 
/*socket_bind=>Vincula el nombre dado en $direccion al socket descrito por $socket.
Esto tiene que ser hecho antes de establecer una conexión
usando socket_connect() o socket_listen().*/
socket_bind($socket$direccion,$puerto);
 
/*socket_listen=>Después de que el socket socket haya sido creado usando socket_create()
y vinculado a un nombre con socket_bind(), se le puede indicar
que escuche conexiones entrantes sobre socket.*/
socket_listen($socket);
 
/*Mientras sea verdadero se ejecuta, quiere decir que
siempre estara a la espera de nuevos clientes*/
$tamaño=2048;
while(
1)
    {
    
$cliente=socket_accept($socket);
    
$buffer=socket_read($cliente$tamaño); //leemos mensaje del cliente
    
echo"$buffer";
    
//$buffer="Saludos, ".$buffer;
        
include("conexion.php");
        
// enviamos la consulta a MySQL
        
        
$queEmp mysql_query("SELECT * FROM registro WHERE ID=$buffer"$conexion)or die(mysql_error());
        
        
$rsEmp mysql_fetch_array($queEmp);
        
        
$result=$rsEmp['Mensaje'];
  
    
socket_write($cliente,$result); //escribimos el buffer
if(buffer==0)
{
    break;
}   
    
    
    
$arrOpt = array('l_onoff' => 1'l_linger' => 1);
    
socket_set_block($cliente);
    
socket_set_option($clienteSOL_SOCKETSO_LINGER$arrOpt);
    
socket_close($cliente); //cerramos cliente

    
}//socket_close=>cierra el recurso socket dado por $socket
    
echo "ya sali del while";
    
    
$arrOpt = array('l_onoff' => 1'l_linger' => 1);
    
socket_set_block($socket);
    
socket_set_option($socketSOL_SOCKETSO_LINGER$arrOpt);
socket_close($socket);
?>
  #2 (permalink)  
Antiguo 13/02/2013, 14:23
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: error php y servidor web

La solución es modificar el timeout de apache. Aunque creo que esa configuración no puede ser modificada en un hosting compartido.

Si lo que necesitas es tener a la escucha ese script permanentemente puede crear un demonio o simplemente crear un cronjob que cada X tiempo el cual antes de iniciar el proceso de escucha verifique si hay otro corriendo. De esta forma evitas pasar por el servidor web (apache en tu caso) y no necesitas configurar el timeout y el servicio se corre independientemente de una llamada HTTP para iniciarlo.
  #3 (permalink)  
Antiguo 13/02/2013, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error php y servidor web

Si tu idea es dejar corriendo el script para que reciba paquetes es pésima idea usar el servidor web para dicho efecto, lo correcto sería ejecutar el script in-background en el servidor sin tener que pasar por Apache.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 13/02/2013, 14:40
 
Fecha de Ingreso: febrero-2013
Mensajes: 11
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: error php y servidor web

hola pateketrueke muchas gracias por tu respuesta me podrías explicar un poco mas como ejecutarlo de la forma que dices? muchas gracias por tu ayuda, saludos
  #5 (permalink)  
Antiguo 13/02/2013, 14:41
 
Fecha de Ingreso: febrero-2013
Mensajes: 11
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: error php y servidor web

hola areslepra gracias por tu respuesta, una pregunta se como crear y poner a funcionar un demonio en local pero como lo haría para el servidor compartido, gracias por tu respuesta saludos!
  #6 (permalink)  
Antiguo 13/02/2013, 15:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error php y servidor web

Bueno, yo me refería al CRON en realidad, pero si no tienes acceso total al servidor es imposible, ya que necesitar configurar el servicio usando SSH.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/02/2013, 15:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: error php y servidor web

Puedes usar exec() para eso, aunque si estas en un compartido no creo que te dejen tener tareas de fondo, necesitas un servidor que te de acceso shell y sea dedicado para que tengas control de como se ejecuta.

Etiquetas: mysql, registro, select, servidor, sql
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 17:28.