Problema fsockopen

ginger27

Nuovo Utente
23 Nov 2014
2
0
0
Salve a tutti,

ho dei problemi con questo vecchio codice php. Funzionava perfettamente su un server interno all'azienda. Abbiamo traslocato la web a un hosting linux esterno e non funziona più. La direzione ip che si indica è una direzione ip fissa .
PHP:
  <?php    

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

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

$ped = 0;
// inviamo codice 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( $f, 30);
$ped = 0;
// inviamo codice articoli e quantità
while(!feof($f)){ 
    $ped = $ped +1 ;
    $pal2 = split("\?",$val);    
    if(strlen($pal2[1]) == 0) $pal2[1] = "0001"; // se è zero lo cambia a 1. Ordine minimo
    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( $f, 30);
}
fwrite($conexion,"10500000000000000000\n");
fwrite($conexion,"0199\n");
set_time_limit(50);
sleep(4);
fclose($f);



// Restituisce un messaggio se l'articolo non è disponibile
$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 = "Stock insufficiente";
            if(strcmp($incidencia,"01") == 0) $incidencia  ="Esaurito";
            if(strcmp($incidencia,"11") == 0) $incidencia  ="Fuori Catalogo";
            if(strcmp($incidencia,"04") == 0) $incidencia  ="Codice sconosciuto";
            if(strcmp($incidencia,"10") == 0) $incidencia  ="Non invia il fabbricante";     
            if(strcmp($incidencia,"00") != 0 ){
                ?>
                      <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 "Non siamo stati in grado di verficare lo stock disponibile. Ci scusiamo per il disagio.";
}
fclose($conexion);
?>

Il codice legge un file con questa struttura e lo invia a un concentratore che lo processa per l' erp.

Codice:
9901585??
000018?3?
000019?2?
 
Se lo script è funzionante, avendo trasferito il tutto su un hosting, probabilmente le cause potrebbero essere due:
1) la versione del PHP
2) la configurazione del file ini

Comunque credo che aprendo un ticket di assistenza alla ditta che fa hosting dovresti risolvere.
Ciao
 

Discussioni simili