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:
codice:
{'array':stringa_dell_array_in json,'files':stringa_del_file_compressi_in_zip}
Il tutto viene codificato e il server restituisce solo caratteri incomprensibili.
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:
codice:
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);
}
In pratica creo un file dal nome
miofile.zip
aggiungo file per file:
codice:
$zip->addFile(DIREZIONE . self::UPLOAD . $file);
Chiudo il file zip.
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