Foros del Web » Programando para Internet » PHP »

fsockopen no me funciona en remoto

Estas en el tema de fsockopen no me funciona en remoto en el foro de PHP en Foros del Web. Hola [email protected], otra vez peleandome con el codigo. Resulta que con este codigo se envia el fichero con esta estructura Código: 9901585?? 000018?3? 000019?2? a ...
  #1 (permalink)  
Antiguo 21/11/2014, 05:59
 
Fecha de Ingreso: febrero-2013
Mensajes: 31
Antigüedad: 9 años, 5 meses
Puntos: 1
fsockopen no me funciona en remoto

Hola [email protected],

otra vez peleandome con el codigo.
Resulta que con este codigo se envia el fichero con esta estructura

Código:
9901585??
000018?3?
000019?2?
a un concentrador que traduce el pedido para el erp (o algo así)

En un servidor windows dentro de la lan de la empresa funciona perfectamente,
pero una vez alojada la web fuera de la empresa en servidor linux no funciona:
La ip es una ip publica fija.

Código PHP:
  <?php    

$fichero 
$_SESSION['telex'];
$fichero "P01web" $fichero;
$f fopen($fichero,"r");

$conexion=fsockopen("8x.xxx.xx.xx","5000");

$ped 0;
// le pasamos la cabecera del cliente
$val fgets($f,30);
fwrite($conexion,"010100000000000000".$val[0].$val[1].$val[2].$val[3].$val[4].$val[5].$val[6]."         ".$val[0].$val[1].$val[2].$val[3].$val[4].$val[5].$val[6]." \n");
fwrite($conexion,"1010".$val[0].$val[1].$val[2].$val[3].$val[4].$val[5].$val[6]."                                                           \n"); // no se procesa
$val fgets$f30);
$ped 0;
// le vamos pasando articulo y cantidad
while(!feof($f)){ 
    
$ped $ped +;
    
$pal2 split("\?",$val);    
    if(
strlen($pal2[1]) == 0$pal2[1] = "0001"// para que pida al menos una unidad si lo deja en blanco
    
if(strlen($pal2[1]) == 1$pal2[1] = "000".$pal2[1];
    if(
strlen($pal2[1]) == 2$pal2[1] = "00".$pal2[1];
    if(
strlen($pal2[1]) == 3$pal2[1] = "0".$pal2[1];
    
fwrite($conexion,"1020000000".$pal2[0]."0".$pal2[1]."\n");
    
$val fgets$f30);
}
fwrite($conexion,"10500000000000000000\n");
fwrite($conexion,"0199\n");
set_time_limit(50);
sleep(4);
fclose($f);



// MUESTRA LAS FALTAS
$val fread($conexion,44);
$val fread($conexion,74);

$comp substr($val,0,4);
//fclose($conexion); 

if(strcmp($comp,"2010") == 0){
    
$fin 1;
        while(
$fin == 1){
        
$val fread($conexion,4);
        if(
strcmp($val,"0199") == 0){
            
$fin 0;
        }
        if(
strcmp($val,"2011") == 0){
            
$val fread($conexion,52);
        }
        if(
strcmp($val,"2015") == 0){
            
$val fread($conexion,46);
            
$articulo substr($val,6,6);
            
$cpedida substr($val,14,3);
            
$cservida substr($val,14,3) - substr($val,18,3);
            
$incidencia substr($val,29,2);
            if(
strcmp($incidencia,"36") == 0$incidencia "Servido parcialmente";
            if(
strcmp($incidencia,"01") == 0$incidencia  ="No hay existencias";
            if(
strcmp($incidencia,"11") == 0$incidencia  ="Articulo de Baja";
            if(
strcmp($incidencia,"04") == 0$incidencia  ="Articulo desconocido";
            if(
strcmp($incidencia,"10") == 0$incidencia  ="No envia laboratorio";     
            if(
strcmp($incidencia,"00") != ){
                
?>
                      <tr>
                        <td><?php echo $articulo?></td>
                        <td><?php echo $cpedida?></td>
                        <td><?php echo $cservida?></td>
                        <td><?php echo $incidencia?></td>

                      </tr>
      
                <?php
                
}
            
$val "";
            
$articulo ""
            
$cpedida "";
            
$cservida ="";
            
$incidencia "";
        }
    }
}else {
    echo 
"No se han podido devolver las faltas. Disculpe las molestias.";
}
fclose($conexion);
?>
No tengo ni idea por donde tirar ya que no tengo casi conocimientos de php y este codigo no lo desarrollé yo.

Etiquetas: fsockopen, remoto
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 04:38.