Управляйте Архивом в памяти с PHP (не создавая временный файл на диске)

Я не знаю, упоминалось ли это ранее. Но я нашел решение здесь :

int result = (int)(floor(sqrt(b)) - ceil(sqrt(a)) + 1);

29
задан ralokt 27 July 2009 в 16:01
поделиться

3 ответа

что вы используете для создания архива? Вы можете использовать поток php: // temp или php: // memory для чтения и записи в / из архива.

См. http://php.net/manual/en/wrappers. php.php

3
ответ дан 28 November 2019 в 01:46
поделиться

Что касается вашего комментария о том, что php: // temp работает для вас, за исключением случаев, когда вы его закрываете, попробуйте оставить его открытым, очистите вывод, затем перемотайте его обратно на 0 и прочтите.

Дополнительные примеры см. Здесь: http://us.php.net/manual/en/function.tmpfile.php

Также исследуйте буферизацию и захват вывода: http: // us. php.net/manual/en/function.ob-start.php

2
ответ дан 28 November 2019 в 01:46
поделиться

Действительно ли здесь проблема с производительностью или это просто оскорбляет ваше чувство правоты? Многие процессы записывают временные файлы и удаляют их, и часто они никогда не попадают на диск из-за кэширования.

Временный файл автоматически удаляется при закрытии. Это природа.

Я могу придумать только два способа создания zip-файла в памяти и его обслуживания, и оба, вероятно, доставляют больше хлопот, чем они того стоят.

  • используйте оперативный диск.
  • измените класс ziparchive, чтобы добавить метод, который делает все, что делает метод close (), за исключением того, что фактически закрывает файл. (Или добавьте параметр "оставить открытым" для close ()).
    Это может быть даже невозможно в зависимости от базовых библиотек C.
-7
ответ дан 28 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: