Я создаю ZIP-файл с несколькими сценариями в нем (например: test.php, functions.js и style.css).PHP создать и загрузить ZIP на лету
Скрипты прекрасно работают, единственная проблема заключается в том, что ZIP-файл размещается на моем веб-сервере. Есть ли способ предотвратить это? Я читал несколько похожих вопросов: this one, похоже, работает, но я не могу понять, как это использовать.
Итак, я не могу удалить файл после его размещения (даже если пользователь его прервал) или (что еще лучше), что мои сценарии никогда не помещают файл на веб-сервер.
download.php
$scriptId = checkNumeric($_GET['sid']);
//Check if user has access to the script
if(isLoggedIn() && hasScriptAccess($scriptId)) {
//Create ZIP
$zip = new ZipArchive();
$zipName = "script.zip";
if ($zip->open($zipName, ZIPARCHIVE::CREATE)!== TRUE) {
exit(); //Something went wrong while creating the ZIP
}
//Get associated codes
$query = $mysqli->query("SELECT * FROM code WHERE script_id = '{$scriptId}'");
while($code = $query->fetch_assoc()) {
$filename = $code['title'];
$content = $code['code'];
//Add file to ZIP
$zip->addFromString($filename, $content);
}
$zip->close();
//Set headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename='" . $zipName . "'");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($zipName));
clearstatcache(); //Make sure the file size isn't cached
readfile($zipName); //Output the file
$zip->deleteName($zipName);
}
Возможно ли запланировать задание cron на вашем сервере, которое очищает каталог, в котором хранятся файлы с заданным интервалом? – Crackertastic
Вы имеете в виду работу cron, которая удалит сохраненные файлы через определенное количество времени? Я думаю, что это возможно, но это не лучшее решение? – JasonK
Да, вот что я имею в виду. Cron мог запустить скрипт, чтобы очистить этот каталог как любой временной интервал, который вы указали. Я понимаю, что вы не хотите хранить файлы на сервере, но они должны будут существовать в течение короткого периода времени, если вы предлагаете загрузку. В прошлом я столкнулся с аналогичной ситуацией, когда мне нужно было время от времени удалять zip-файлы, но не удалось установить задания cron. В итоге мне пришлось программировать функциональность, которая иногда запускается как часть обычного трафика сайта. – Crackertastic