Problema download e file compressi

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Ciao a tutti!
Eccomi con un altro bel rompicapo.. :hammer:
Ho un sito su un server che ha una vecchia versione di php e quindi non contiene le librerie php zip e non sono nemmeno installabili.
Ho un file zip che contiene un xml di 100Mb su un ftp esterno al server su cui lavoro.

Devo fare il download del file sul mio sito e dezipparlo per poterci lavorare.

Il problema è che una volta nel mio server non riesco a dezipparlo per la mancanza delle librerie php zip e le classi gz (sono l'unica cosa che ho trovato in sostituzione alle librerie php zip) hanno un limite di memoria che il file supera abbondantemente!! e come risultato non ottengo niente....

Allora ho provato a decomprimerlo sull'ftp esterno e poi fare il download (che con il file .zip ha sempre funzionato) sul mio sito ma il server su cui lavoro :incazz: non riesce a terminare il download e da "internal server error".

Esistono altri modi per decomprimere file zip senza le librerie oltre alle classi gz?
Altrimenti non riesco proprio a venirne fuori....
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
lavorando da remoto non è che hai un ampio ampio margine di manovra, hai provato a segnalare la cosa al provider?
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Certo, mi hanno fatto un mucchio di storie, mandaci il link, dacci le password e sono ancora in attesa di una risposta...
L'unica cosa che sono riusciti a dirmi è stata di comprare un server dedicato o virtuale per avere ftp secondari.

Ma davvero non ci sono altre soluzioni per decomprimere file??
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
41
Sanremo
Non ho mai provato ad usarle, però phpMyAdmin usa due classi (./libraries/unzip.lib.php e ./libraries/zip.lib.php) per gestire i file ZIP.

Ho fatto solo un test per verificarne il funzionamento:

PHP:
<?php

include 'unzip.lib.php';

$unzip = new SimpleUnzip("crayon.zip");

foreach($unzip->Entries as $entry) {
	if($entry->Error == 0) {
		if(!file_exists($entry->Path)) {
			if([email protected]($entry->Path, 0777, true)) {
				echo "<div>Errore nella creazione della cartella: " . $entry->Path . "</div>";
			}
		}
		$fp = fopen($entry->Path . "/" . $entry->Name, "w");
		fwrite($fp, $entry->Data);
		fclose($fp);
	} else {
		echo "Errore file compresso: " . $entry->ErrorMsg;
	}
}

?>

Ma non garantisco su memoria e timeout...
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Ma ho chiesto al provider del server su cui lavoro se hanno a disposizione librerie come php zip e mi ha risposto:
"La informo che sui nostri Server allo stato attuale non sono presenti le librerie "Php_zip" e non sono installabili."

Ora phpMyAdmin l'ho utilizzato una volta per un sito di cui necessitavo di un pannello di controllo del database... in questo server ho già a disposizione questo...

Aiuto.... mi stò perdendo...
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
41
Sanremo
Non volevo intendere di usare phpMyAdmin, ma solo le sue due librerie, anzi solo quella per decomprimere.

La libreria la puoi scaricare da qui.

La salvi e fai l'upload nel tuo sito, insieme ad uno script come quello che ho postato prima. L'unica cosa che devi cambiare è:

PHP:
$unzip = new SimpleUnzip("tuo_file_zip.zip");
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Ho aumentato la versione di php al 5.2 ed ho 64MB di memoria ma ora riscontro un problema di codice....:dipser:

Ecco la mia classe gz:
PHP:
class gz_single {

/* Inizializza le variabili */
var $source;
var $dest;
var $level;
var $pointer;
var $gzdata;
var $data;
var $status;

function compress($source, $dest, $level)
{
/* Inizializza le variabili */
$this->source = $source;
$this->dest = $dest;
$this->level = $level;

/* Controlla che il file d'origine esista e che sia leggibile */
if(!is_file($this->source) OR !file_exists($this->source) OR !is_readable($this->source)) exit("Error 1: Source file doesn't exists or it's not readable!<br>");

/* Controlla che il file di destinazione non sia di sola lettura */
if(is_file($this->dest) AND !is_writeable($this->dest)) exit("Error 2: The destination file it's not writeable");

/* Arrotonda il livello di compressione */
$this->level = round($this->level);

/* Controlla il livello e se è troppo grande, lo porta al massimo */
if($this->level == 'MAX' OR $this->level > 9) $this->level = 9;

/* Controlla il livello e se è troppo piccolo, lo porta al minimo */
if($this->level == 'MIN' OR $this->level < 1) $this->level = 1;

/* Prende i dati dal file d'origine */
$this->data = file_get_contents($this->source);

/* Comprime i dati del file d'origine */
$this->gzdata = gzcompress($this->data, $this->level);

/* Scrive i dati compressi nel file di destinazione */
$this->status = file_put_contents($this->dest, $this->gzdata);

/* Ritorna i valori positivi e negativi in base all'esito dell'operazione */
if($this->status) return TRUE; else return FALSE;
}

function decompress($source, $dest)
{
/* Inizializza le variabili */
$this->source = $source;
$this->dest = $dest;

/* Controlla che il file d'origine esista e che sia leggibile */
if(!is_file($this->source) OR !file_exists($this->source) OR !is_readable($this->source)) exit("Error 1: Source file doesn't exists or it's not readable!<br>");

/* Controlla che il file di destinazione non sia di sola lettura */
if(is_file($this->dest) AND !is_writeable($this->dest)) exit("Error 2: The destination file it's not writeable");

/* Prende i dati dal file d'origine */
$this->gzdata = file_get_contents($this->source);

/* Comprime i dati del file d'origine */
$this->data = gzuncompress($this->gzdata);

/* Scrive i dati decompressi nel file di destinazione */
$this->status = file_put_contents($this->dest, $this->data);

/* Ritorna i valori positivi e negativi in base all'esito dell'operazione */
if($this->status) return TRUE; else return FALSE;
}
}

Ecco il codice:
PHP:
$singlegz = new gz_single();
$status = $singlegz->decompress("file.zip", "file.xml");
if(!$status) print "Errore durante la decompressione dell'archivio gz";

Come risultato ottengo:
Warning: gzuncompress() [function.gzuncompress]: data error in /gz_single.class.php
Errore durante la decompressione dell'archivio gz

Non capisco quale sia il problema....
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
41
Sanremo
Il problema di fondo è che gzip e zip sono molto diversi anche se il nome è molto simile.

In più la funzione gzuncompress effettua solo la decompressione di una stringa compressa con l'algoritmo usato da gzip.

Per usare una classe come questa dovresti provare a comprimere il file XML sull'altro server usando la stessa classe che qui usi per decomprimere.
Così facendo ci sarebbe omogeneità nei formati!
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Hoprovato la libreria che mi hai consigliato, ma ora come risultato da:
Errore file compresso: Compressed size is not equal with the value in header information.Errore file compresso: Compressed size is not equal with the value in header information.

Ho provato a dezippare il file sul mio pc ed all'interno ho 2 file
-file.MDB
-file.MDB.xml

Forse è questo che da dei problemi?
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
41
Sanremo
Direi proprio di no. Lo ZIP che ho provato a decomprimere io contiene diversi file con cartelle nidificate. In più è un file scaricato da Internet, quindi non creato "ad hoc" come test per la classe.

Ma nello ZIP non doveva esserci solo un file? Sei sicuro che lo ZIP non sia lievemente corrotto? Come viene creato lo ZIP sull'altro server?
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
No lo zip è corretto, pensavo contenesse solo un xml poi quando l'ho dezippato su pc ho visto anche il file MDB.... scusate...:p
L'xml contenuto, dezippato è 101.000.000 Kb, forse è troppo grande?
Lo zip viene creato su un server ancora diverso e non da me, ma da un professionista, che lo invia a questo ftp di cui ho i dati di accesso proprio per poterne fare il downlod sul server del mio sito....
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Se non trovo una soluzione mi conviene cambiare provider.......:gun:
Questo server ha troppe limitazioni...
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
41
Sanremo
Ecco per quanto riguarda la dimensione potrebbe anche essere un problema. Lo ZIP che ho provato io decompresso era sui 12MB.
potresti provare a configurarti un webserver di test in locale per fare le prove con questo ZIPPONE e verificare così se il problema è nella classe, o nelle risorse che hai a disposizione sul server dove risiede il tuo script.
 

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Grazie per il vostro aiuto, ma sto già procedendo a spostare il sito su un server migliore. Comunque se qualcuno ha il mio stesso problema ho trovato una classe adatta qui.

Grazie ancora!:p
 
Discussioni simili
Autore Titolo Forum Risposte Data
C [PHP] Problema con download file PHP 0
LaKanka Problema download file .gz da directory protetta su altro server PHP 13
L problema download file PHP 15
felino ADSL velocità download limitata: problema del router? Adsl e Connettività 1
M Problema dimensioni download PHP 2
M problema script che forza il download PHP 0
P Problema Con I Download Classic ASP 2
T Problema: come creare un download? HTML e CSS 2
C problema seo + cerco esperto SEO e Posizionamento 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1

Discussioni simili