Mon script PHP continue de se bloquer/expirer, probablement à cause du fichier readfile. Mon objectif est de générer le fichier zip, de le laisser télécharger par l'utilisateur et de supprimer le fichier zip par la suite.Le téléchargement du fichier readfile PHP expire
code:
<?php
if(isset($_POST['version']) && isset($_POST['items']) && isset($_POST['identifier'])) {
$identifier = $_POST['identifier'];
$version = $_POST['version'];
$tmp = dirname(__FILE__) . "/download/";
$zipfile = $tmp . $identifier . ".zip";
$name = "Program v" . $version . ".zip";
$path = dirname(__FILE__) . "\\download\\template\\" . $version;
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path),
RecursiveIteratorIterator::LEAVES_ONLY
);
$zip = new ZipArchive();
if ($zip->open($zipfile, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
foreach ($files as $name => $file) {
// Skip directories (they would be added automatically)
if (!$file->isDir()) {
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($path) + 1);
//echo "adding " . $file . " as " . $relativePath;
// Add current file to archive
$zip->addFile($file, $relativePath);
}
}
$zip->close();
} else {
die('Error: Unable to create zip file');
}
// Stream the file to the client
header('Content-Type: application/zip');
header('Content-Length: ' . filesize($zipfile));
header('Content-disposition: attachment; filename="'.$name.'"');
readfile($zipfile);
exit;
}
Tout fonctionne jusqu'à la partie de téléchargement. Le fichier zip est généré correctement sur le serveur, en cas de tentative de téléchargement, il se bloque.
Parfois, il affiche une erreur dans mes journaux, ce qui me dit qu'il attend un chemin valide et qu'un objet est donné. Même si elle met strictement une chaîne (le chemin).
Remarque: Le fichier fait moins de 300 KiB, donc je doute fortement que le serveur web manque de mémoire.
Je suis assez perdu, toute aide est très appréciée.
Merci! Cela a résolu le problème! – Erveon