PHP:gzdeflate 在多台机器上安全吗?

2023-11-22

在 PHP 手册中有一条关于 gzdeflate 的评论说:

gzcompress 产生更长的数据,因为它嵌入了以下信息 字符串上的编码。如果您正在压缩数据, 仅在一台机器上处理,那么您无需担心 关于您使用其中哪些功能。但是,如果您通过 使用这些功能将数据压缩到不同的机器,您应该 使用gz压缩。

and then

对各种内容重复运行 50000 次,我发现 gzdeflate() 和 gzcompress() 无论内容和内容都执行得同样快 压缩级别,但 gzinflate() 的速度总是大约是 gzuncompress()。

出于我的目的,我将数据存档在机器上以供将来使用。数据经常被读取,但只被写入一次。理论上,如果我在某个时候更换服务器,有一天它会被转移到另一台机器上,但那是几年后的事了。

使用 gzdeflate 和 gzinflate 相对于 gzcompress 和 gzuncompress 安全吗?

我的想法如下:gzinflate 更快,这对服务器有很大帮助,因为会有很多读取请求。如果将来某个时候我无法读取该文件,那么我应该能够弄清楚如何解压缩该文件并重新压缩它,对吗?并不是说 gzinflate 有一天会神奇地不起作用,就像第一条评论所说的那样。即使缺少 6 字节标头,我也确信它可以以某种方式扩展。

想法?

更新——基准

每次迭代 10,000 次:

gzdeflate took 19.158888816833 seconds and size 18521
gzinflate took 1.4803981781006 seconds
gzcompress took 19.376484870911 seconds and size 18527
gzuncompress took 1.6339199542999 seconds
gzencode took 20.015944004059 seconds and size 18539
gzdecodetook 1.8822891712189 seconds

评论纯属无稽之谈。您可以使用任何gzcompress, gzdeflate, or gzencode生成可以在任何地方便携式解压缩的压缩数据。这些函数的区别仅在于紧缩数据的包装器(RFC 1951)。gzcompress有一个 zlib 包装器(RFC 1950),gzdeflate没有包装纸,并且gzencode有一个 gzip 包装器(RFC 1952)。

我会推荐not using gzdeflate,因为没有包装器意味着没有完整性检查。gzdeflate仅当在其外部生成其他包装器时才应使用,例如对于 zip 文件,也使用 deflate 格式。关于速度的评论几乎肯定是错误的。的完整性检查gzuncompress()与减压相比,花费的时间很少。你应该做你自己的测试。

从这个例子来看,我可能过于笼统,但我想说你应该完全忽略 PHP 文档中的注释。坦率地说,他们是无知的。

顺便说一句,这些函数的命名方式非常混乱。仅有的gzencode应该有 ”gz” 的名称,因为这是唯一一家真正从事该业务的公司.gz格式。gzcompress听起来像是压缩为gzip格式,但实际上它压缩为zlib格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:gzdeflate 在多台机器上安全吗? 的相关文章

  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • PHP 下载脚本输出损坏的文件

    我正在用 PHP 为我的 CMS 构建一个文件下载类 当时我注意到它以不同的编码格式输出文件 我尝试使用 readfile file get contents fread 但似乎都在做同样的事情 这就像与输出缓冲有关的东西 我使用脚本下载的
  • 是否可以在 UML 中可视化一堆函数

    我正在改进一个使用类和函数文件 只是包含各种函数的 php 文件 的内容管理系统 例如 我有一堂课叫Admin以及一个功能文件 其功能包括显示管理员概述 创建新管理员 编辑现有管理员 删除管理员 函数文件使用类并执行 mvc 概念的可视化部
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • Symfony 生成器形式、原则和 M:N 关系

    我有一个基本的 M N 设置 包含三个表 candidate position 和 Candidate position 这是 MySQL Workbench 的 ERD 屏幕截图 现在 我们继续讨论表单 在 symfony 生成器的默认世
  • 查明具有特定 ID 的会话是否已过期

    我正在创建一个上传功能 将用户上传的文件存储在服务器上 并以用户的会话 ID 作为名称 现在 我只想将此文件保留在服务器上 直到该会话处于活动状态 所以 我的问题是 如何根据会话 ID 确定会话是活动的还是过期的 以便在后一种情况下我可以安
  • Memcache 不会刷新或清除内存

    我一直在尝试清除我的内存缓存 因为我注意到使用时存储占用了近 30 的服务器内存ps aux 所以我运行了以下 php 代码 memcache new Memcache memcache gt connect localhost 11211
  • PHP 中的静态类初始值设定项

    我有一个带有一些静态函数的辅助类 类中的所有函数都需要一个 重 初始化函数来运行一次 就好像它是一个构造函数 有实现这一目标的良好实践吗 我唯一想到的就是打电话init函数 如果它已经运行过一次 使用静态 initialized变种 问题是
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • 在另一个文件中扩展类的正确方法是什么?

    这就是我在 foo php 中的内容 class Foo public foo NULL public foo2 NULL public function setFoo foo foo2 this gt foo foo this gt fo
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 将 Cloudinary 与 spatie/media-library Laravel 包一起使用

    有人使用 Laravel 包 spatie media library 和 Cloudinary 吗 我认为用 Flysystem 来实现它是微不足道的 我实际上使用 Cloudinary 作为带有 silvanite nova field
  • 从检查元素隐藏 ''

    我有这个 HTML 和 PHP 联系表
  • 自定义 WordPress 画廊 html 布局

    当使用默认媒体上传器在 WordPress 中创建图像库时 WordPress 将图像包装在一堆 HTML 标记中 如何在生成之前覆盖它 以便我可以输出所需的标记并更改创建图库布局的方式 目前 WordPress 生成的代码如下 div d
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战
  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • 管理产品页面自定义字段显示在购物车和结账中

    我在产品页面的常规设置选项卡上的 WooCommerce 管理中创建了一个自定义字段 以插入几天的制造时间 我想在购物车和结帐页面上每个产品名称上方显示此自定义字段值 这是我的代码 Insert a Custom Admin Field f

随机推荐

  • 在 Neo4j 中实现 Dijkstra 算法

    我对 Neo4j 很陌生 有人可以向我解释 请逐步 如何实现 Dijkstra 算法来找到两个节点之间的最短路径 是否可以简单地使用 Cypher 来完成它 我已经尝试过最短路径算法 但它很慢 MATCH from Location Loc
  • 为什么我不能反转 str::split 的结果?

    根据文档Split 有一个rev方法对结果的影响split在字符串上 fn main let mut length 0 let mut mult 1 for part in 1 30 split rev length mult part p
  • Eclipse p2:category.xml 和 site.xml 之间的区别

    p2 存储库创建 ant 任务 例如 eclipse publish featuresAndBundles 似乎采用指定类别信息的 site xml 或category xml 文件 我发现 eclipse 生成的 site xml 和ca
  • 圆形ViewPager。第一轮后碎片无法正常工作

    好的 所以我需要圆形 ViewPager 我真的很难实施它 现在我已经实现了它 并且就圆形滚动而言它运行良好 但我注意到一个问题 那就是 第一轮滚动片段不起作用后 我有三个片段 里面有一个按钮 按钮在第一轮有效 但当我回到第一页时按钮不起作
  • 有没有办法在 Eclipse 中自动生成 getter 和 setter?

    我正在研究一个新的Android项目 Java 并创建了一个带有大量变量的对象 由于我计划为所有这些添加 getter 和 setter 所以我想知道 是否有捷径Eclipse自动生成给定类中的 getter 和 setter 在所需类的源
  • 使用 JSONB 列内的值连接表

    有两个表 授权联系人 auth contacts userid varchar contacts jsonb contacts包含具有属性的联系人数组 contact id type discussion contact id varcha
  • 在 cmake 构建中使用 LLVM

    我正在尝试构建自己的使用 LLVM 的项目 我在官网上下载了源码和预编译包 最新版本 http releases llvm org download html 我下载了 LLVM source code Clang for Windows
  • 角度材料将 angularjs 1.5 组件加载到 $mdDialog 中

    目标 使用组件而不是使用 scope 来设置数据 没有可共享的错误 问题是对话框加载组件时未设置数据元素 屏幕截图显示了对话框的当前状态 选项卡 2 信息 中应该有一个绑定的对象 我可以使用 onComplete 事件验证对话框加载后对象
  • 如何通过两个键对 JSON 对象进行排序?

    我有一个 JSON 对象 我想先按一个键排序 然后按第二个键排序 类似于 SQL 中按两列排序 以下是我想要的 JSON 示例 GROUPID 3169675 LASTNAME Chantry 我想按 GROUPID 然后按 LASTNAM
  • 每个连接请求都被视为直接连接请求+ android ble

    我们正在编写一个 ble 应用程序 希望与我们想要连接的外设建立持久连接 出于同样的目的 每当我们失去现有连接时 我们都希望与外围设备重新连接 因此 我们作为中心的 Android 应用程序只是尝试通过调用 bluetoothdevice
  • Tensorflow 因 CUDNN_STATUS_ALLOC_FAILED 崩溃

    在网上搜索了几个小时没有结果 所以我想在这里问一下 我正在尝试按照 Sentdex 的教程制作一辆自动驾驶汽车 但是在运行模型时 我遇到了一堆致命错误 我在网上搜索了解决方案 很多人似乎都有同样的问题 但是 我没有找到任何解决方案 包括这个
  • KMM 与公共(共享)模块中的 Java 源

    由于平台限制 我们无法将 Java 源代码与 Kotlin Multiplatform Mobile 一起使用 但如果 Kotlin 与 Java 100 兼容 为什么我们不能将 Java 与 Kotlin Multiplatform Mo
  • OpenSSL 连接:警报内部错误

    我使用 SNI 在单个服务器上运行 100 个 HTTPS 服务 实际上 我无权访问它们 这是一项任务 我只知道他们的域名N xxx yy其中 N 的范围是 00 到 99 分配的目标是评估与每个服务器的每个连接的安全性 因此 某些服务器包
  • Bash 需要测试字母数字字符串

    尝试验证字符串中是否仅包含小写 大写或数字 if TITLE a zA Z0 9 then echo INVALID fi 想法 更新 变量 TITLE 目前只有大写文本 因此它应该通过并且不应该输出任何内容 但是 如果我向 TITLE 添
  • “find -exec”或“find |”哪个更快xargs -0'?

    在我的 Web 应用程序中 我使用 PHP 脚本渲染页面 然后从中生成静态 HTML 文件 静态 HTML 提供给用户以提高性能 HTML 文件最终会变得陈旧 需要删除 我正在讨论两种编写驱逐脚本的方法 第一个是使用单个 find 命令 例
  • 使用 ServiceWorker 缓存 iframe 请求

    我正在尝试使用 ServiceWorker 缓存 iframe 的请求 使用 sw toolbox js 但无论我如何尝试 正如 Chrome Network Tab 告诉我的那样 ServiceWorker 永远不会提供文件 这是我的 s
  • ElasticSearch 5:带有 multi_field 的 MapperParserException

    此映射已在 ES 2 X 中运行 现在在 ES 5 中出现异常 type1 properties name type multi field fields name type string index analyzer standard i
  • Soap 错误,编码:对象没有“RecordId”属性

    我正在在线制作一个连接到肥皂网络服务的注册表单 并且应该能够通过它保存付款信息 PHP是这样的 function create member fee wsdl WSDL LOCATION client new mySoap wsdl arr
  • 如何在 NASM 汇编中进入 32 位保护模式?

    我正在学习 x86 汇编 并且正在尝试在 NASM 中制作一个玩具操作系统 但我不明白一些东西 我制作了一个成功启动内核的引导加载程序 从包含内核文件的软盘中加载 14 个扇区 在这些标记为的扇区中搜索文件kernel feo 将该文件加载
  • PHP:gzdeflate 在多台机器上安全吗?

    在 PHP 手册中有一条关于 gzdeflate 的评论说 gzcompress 产生更长的数据 因为它嵌入了以下信息 字符串上的编码 如果您正在压缩数据 仅在一台机器上处理 那么您无需担心 关于您使用其中哪些功能 但是 如果您通过 使用这