Foros del Web » Programando para Internet » PHP »

Transferir archivo zip de un servidor a otro con fsockopen

Estas en el tema de Transferir archivo zip de un servidor a otro con fsockopen en el foro de PHP en Foros del Web. Hola a todos, estoy tratando de transferir un archivo zip de un promedio de 10 mb de un servidor a otro socket. El codigo funciona ...
  #1 (permalink)  
Antiguo 12/01/2010, 11:07
 
Fecha de Ingreso: julio-2009
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Transferir archivo zip de un servidor a otro con fsockopen

Hola a todos, estoy tratando de transferir un archivo zip de un promedio de 10 mb de un servidor a otro socket.
El codigo funciona con archivo menor a 2 mb, el problema es que los archivos pueden llegar a pesar 150 mb.

Código PHP:
function send_zip_course($url$_data$pathFile) {
        
$url parse_url($url);
        if (
$url['scheme'] != 'http') { 
            die(
'Only HTTP request are supported !');
        }
        
$host $url['host'];
        
$path $url['path'];
        
srand((double)microtime()*1000000);
        
$boundary "---------------------".substr(md5(rand(0,32000)),0,10);
        
// Build the header
        
$header "POST $path HTTP/1.0\r\n";
        
$header .= "Host: $host\r\n";
        
$header .= "Content-type: multipart/form-data, boundary=$boundary\r\n";
        
$data '';
        foreach(
$_data AS $index => $value){
            
$data .="--$boundary\r\n";
            
$data .= "Content-Disposition: form-data; name=\"".$index."\"\r\n";
            
$data .= "\r\n".$value."\r\n";
            
$data .="--$boundary\r\n";
        }
        
// and attach the file
        
$data .= "--$boundary\r\n";
        
$content_file file_get_contents($pathFile);

        
$data_file .= "Content-Disposition: form-data; name=\"userfile\"; filename=\"".$pathFile."\"\r\n";
        
$data_file .= "Content-Type: application/zip \r\n\r\n";
        
$data_file .= "".$content_file."\r\n";
        
$data_file .= "--$boundary--\r\n";
        
$header.= "Content-length: " . (strlen($data)+ strlen($data)+ strlen($data_file)). "\r\n\r\n";
        
        
// Open the connection
        
$fp fsockopen($host80);
        
$result '';
        
// Send header
        
fwrite($fp$header);
        
fwrite($fp$data);
        
// Send content
        
self::fwrite_with_retry($fp$data_file);
        
fclose($fp);
    }

    function 
fwrite_with_retry($sock, &$data)
    {
        
$bytes_to_write strlen($data);
        
$bytes_written 0;
        while ( 
$bytes_written $bytes_to_write )
        {
            if ( 
$bytes_written == ) {
                
$rv fwrite($sock$data);
            } else {
                
$rv fwrite($socksubstr($data$bytes_written));
            }
    
            if ( 
$rv === false || $rv == )
                return( 
$bytes_written == false $bytes_written );
    
            
$bytes_written += $rv;
        }
        return 
$bytes_written;
    } 
Server destino, lo guardo el archivo de esta forma:
Código PHP:
...
move_uploaded_file($_FILES['userfile']['tmp_name'], $path_couse.DS.$file_name);
... 
Tambien e modificado parametros de configuracion pero nada
Código PHP:
ini_set('post_max_size','200M');
ini_set('upload_max_filesize','200M');
ini_set('memory_limit','256M');
ini_set('max_execution_time',1800); 
de ante mano gracias a los que me puedan ayudar con esto.

Última edición por jhp1411; 12/01/2010 a las 11:13
  #2 (permalink)  
Antiguo 12/01/2010, 12:32
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Transferir archivo zip de un servidor a otro con fsockopen

¿Y en vez de usar un socket usas FTP para mover un archivo de un servidor a otro?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/01/2010, 13:24
 
Fecha de Ingreso: julio-2009
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Transferir archivo zip de un servidor a otro con fsockopen

habra alguna otra solucion sin utilizar FTP ?

gracias por la respuesta
  #4 (permalink)  
Antiguo 12/01/2010, 13:33
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Transferir archivo zip de un servidor a otro con fsockopen

solo si implementas otro socket de escucha en el otro server, que seria prácticamente lo mismo, la otra es codificar el binario con base64_encode/gzinflate y decodificarlo en el otro server con gzdeflate /base64_decode, pero tendrías el mismo problema del tamaño

Etiquetas: fsockopen, zip, servidores
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 03:20.