Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2014, 05:59
ginger27
 
Fecha de Ingreso: febrero-2013
Mensajes: 31
Antigüedad: 9 años, 6 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.