Il problema e' che non esiste iterazione con il cliente, il processo e' automatico (uso cron).
Con cron si lancer�, ad un' ora prestabilita, il processo, mediante un url, la pagina dovr� restituire solo testo.
Nel testo, restituito dal server web, dovra' essere contenuto, un array (in formato json) e un file zip, tutto verra' encrypted,.
Non posso mettere dei link per il download.
Per farti un esempio:
Il tutto viene codificato e il server restituisce solo caratteri incomprensibili.codice:{'array':stringa_dell_array_in json,'files':stringa_del_file_compressi_in_zip}
La pagina ricevuta viene decodificata e si estrapolano i dati.
Il mio problema adesso e' che il metodo che utilizzo per la compressione dei file, mi 'costringe' a creare un file temporaneo su disco, e vorrei evitarlo:
In pratica creo un file dal nomecodice:private function getFileZip($array) {//$array contiene i nomi originali dei file da zippare $nomeFile = "miofile.zip"; $zip = new ZipArchive(); $indirizzo = DIREZIONE . self::UPLOAD . $nomeFile; //apro il file zip if ($zip->open($indirizzo, ZipArchive::CREATE) !== TRUE) { return FALSE; exit("Non ho potuto aprire <$indirizzo>\n"); } foreach ($array as $index => $file) { //aggiungo il file $zip->addFile(DIREZIONE . self::UPLOAD . $file); } $zip->close(); //leggo il file appena creato, il metodo getFile non fa altro che restituire il file(utilizzo file_get_contents), se esite $fileCaricato = $this->getFile(self::UPLOAD . $nomeFile); return base64_encode($fileCaricato); }
miofile.zip
aggiungo file per file:
Chiudo il file zip.codice:$zip->addFile(DIREZIONE . self::UPLOAD . $file);
Leggo il file zip e lo metto in una variabile.
Cancello il file con unlink (questa linea di comando non e' presente nel codice postato)
Restituisco la variabile.
Come posso evitare di creare un file e lavorare solo in memoria?
Grazie,
Roberto

Rispondi quotando