Intereting Posts
Вызов функции-заполнителя () для не-объекта В PHP задана строка месяца, такая как «Ноябрь», как я могу вернуть 11 без использования инструкции 12-разрядного переключателя? Нажатие кнопки «Назад» перенаправляет зарегистрированного пользователя для выхода из системы? Mcrypt не обнаружен при установке Laravel синтаксис ошибки синтаксического анализа неожиданный конец файла php Поворот ссылок с использованием геоплегина Неустранимая ошибка: неопределенная константа класса Htaccess URLRewrite на другую карту Вывод пользовательского поля WordPress после the_content ошибка при загрузке строки со специальными символами Показать Curl POST Request Headers? Есть ли способ сделать это? Связь между браузерами через PHP подключение приложений для Android в базу данных mysql как связать несколько параметров с запросом MySQLi Закрытие вызова, присвоенное объекту напрямую

php zip включает только новые файлы

У меня возникла проблема с библиотекой php zip, вызвавшей ошибку 500, если файл растет до 500 МБ, возможно, связанный с памятью …

Но я попытался создать cmd для создания zip-файла, который хорошо работает на моем сервере.

<?php set_time_limit(10000); // Make Zip name $zipname = "main_backup.zip"; // Make a zip file $cmd = `zip -r $zipname * -x filelist.php -x $zipname`; if($cmd){ echo 'zip created'; } else{ echo 'failed'; } unlink(__FILE__); ?> 

Я знаю, как исключать файлы и папки, но есть ли способ закрепить только файлы на основе измененного времени с использованием этого подхода?

Я гугл в течение нескольких часов и подошел пустой.

для этого, вот код, который создавал ошибку 500. Мой сайт составляет около 1,8 ГБ, он всегда ошибки при 500 МБ ~. Я должен отметить, что журнал ошибок пуст, поэтому причиной ошибки я просто предполагаю, что это проблемы с ограничением RAM.

 <?php $zip = new ZipArchive; $zip_name = "test.zip"; $res = $zip->open($zip_name, ZipArchive::CREATE); /** * Real Recursive Directory Iterator */ class RRDI extends RecursiveIteratorIterator { /** * Creates Real Recursive Directory Iterator * @param string $path * @param int $flags * @return DirectoryIterator */ public function __construct($path, $flags = 0) { parent::__construct(new RecursiveDirectoryIterator($path, $flags)); } } /** * Real RecursiveDirectoryIterator Filtered Class * Returns only those items which filenames match given regex */ class AdvancedDirectoryIterator extends FilterIterator { /** * Regex storage * @var string */ private $regex; /** * Creates new AdvancedDirectoryIterator * @param string $path, prefix with '-R ' for recursive, postfix with /[wildcards] for matching * @param int $flags * @return DirectoryIterator */ public function __construct($path, $flags = 0) { if (strpos($path, '-R ') === 0) { $recursive = true; $path = substr($path, 3); } if (preg_match('~/?([^/]*\*[^/]*)$~', $path, $matches)) { // matched wildcards in filename $path = substr($path, 0, -strlen($matches[1]) - 1); // strip wildcards part from path $this->regex = '~^' . str_replace('*', '.*', str_replace('.', '\.', $matches[1])) . '$~'; // convert wildcards to regex if (!$path) $path = '.'; // if no path given, we assume CWD } parent::__construct($recursive ? new RRDI($path, $flags) : new DirectoryIterator($path)); } /** * Checks for regex in current filename, or matches all if no regex specified * @return bool */ public function accept() { // FilterIterator method return $this->regex === null ? true : preg_match($this->regex, $this->getInnerIterator()->getFilename()); } } foreach (new AdvancedDirectoryIterator('-R *') as $i){ //$fullpath = str_replace(',','',$i->getPath()).'/'.$i->getFilename(); //echo $fullpath.'<br />'; if ($i->isFile() && $i->getFilename()!='filelist.php') { //echo $i->getFilename() . " " . $i->getMTime() . "<br />"; if($i->getMTime()>='0'){ $array[] = substr($i->getPathname(), 2); } } }; // will output all php files in CWD and all subdirectories foreach($array as $files) { $zip_array[] = files; $zip->addFile($files); } $zip->close(); echo 'done'; ?> 

Вы можете использовать опцию -t или -tt для zip-команды и иметь свою измененную дату, хранящуюся как переменную, или просто передать ее.

-t с форматом mmddyyyy для даты

-tt с форматом mmddyyyy для досрочного

 //Zips up all files in current directory that were dated 08152013 or later zip -r -t 08152013 $zipname * -x filelist.php -x $zipname