PHP 动态调整图像大小与存储调整大小的图像

2024-03-16

我正在构建一个图像共享网站,想了解使用 PHP 动态调整图像大小并存储调整后的图像的优缺点。

哪个更快?

哪个更可靠?

两种方法在速度和性能上差距有多大?

请注意,无论哪种方式,图像都会通过 PHP 脚本进行统计(例如视图),或者是否允许热链接等...因此,如果我选择存储调整大小的图像,它就不会是图像的直接链接。

我将感谢您的评论或有关该主题的任何有用的链接。


这绝对是无与伦比的事情。

事实上,动态调整图像大小就像在您自己的服务器上运行 DoS 攻击一样。调整一张常用图像的大小比为 php 脚本提供一个常用请求需要更多的 CPU 和 RAM。这已经对性能产生了巨大影响。然而,通常的缩略图不是单独显示,而是以数字形式显示。因此,虽然只显示一个图库页面,但您正在创建数十个重负载进程,从而使服务器负载增加十倍或更多。

快速而肮脏的测试来证明我的话: 让我们尝试调整相对较小的 1.3 兆像素图像的大小

$ /usr/bin/time --format="%MK mem %Es CPU time" /usr/bin/convert angry_birds_1280x800.jpg -resize 100x100 thumb.jpg
10324K mem 0:00.10s CPU time

我们花了 0.1 秒,因此,显示 10 个图像预览将占用您整整一秒的 CPU 时间。正确编写 PHP 画廊页面大约需要 0.01 秒。因此,当您动态调整大小时,服务器负载会增加 100 倍。

与记忆相同。每个调整大小过程将占用不少于 10M 的内存(调整 100k 图像文件的大小!),总内存为 100M。而PHP脚本通常的内存限制仅为8M,而且很少达到。

那是现实生活中的数字。

与这个问题相关的一件有点有趣的事情:
完全相同的 PHP 用户谁轻易地扔掉了 1000000 个 CPU 周期,同时又难以置信地嫉妒节省 1 或 2 个 CPU 周期!这不是修辞手法,这是我正在谈论的一个例子:
A 类似的问题 https://stackoverflow.com/questions/9464618/on-the-fly-thumbnail-resize-generation-of-images/来自某人,他的极大的关心同时在微不足道的事情中常量、变量或变量数组之间的速度差异 https://stackoverflow.com/questions/7766486/which-is-faster-constants-variables-or-variable-arrays。还有谁最近遇到允许的内存大小耗尽的问题 https://stackoverflow.com/questions/9432810/fatal-error-allowed-memory-size-in-php-when-allocating-less,好像这样的灾难还不够。

这个网站上有大量的问题和答案,争论任何操作的纳秒速度差异,并以无尽的尊严回答,运行数百万次迭代的测试,以显示每个 CPU 周期的一次性操作之间的差异绝对可以忽略不计。

同时也存在这样的问题——两种方法在性能方面存在巨大的、无可比拟的差异,而这在作者看来只是相同的。

这就是普通 PHP 用户和这个网站的问题。
前者只是没有能力区分真实事物和微观事物。
然而,后者没有对问题进行健全性检查的机制 - 每个人都以同样的热情回答,即使两个问题彼此矛盾(并且都具有常识)。

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

PHP 动态调整图像大小与存储调整大小的图像 的相关文章

  • 对于双核手机,availableProcessors() 返回 1

    我最近购买了一部 Moto Atrix 2 手机 当我尝试查看手机中的处理器规格时 Runtime getRuntime availableProcessors 返回 1 proc cpuinfo 也仅包含有关处理器 0 的信息 出于好奇
  • 磁盘寻道时间测量方法

    我编写了一个脚本来测量 HDD 上的寻道时间 并且其完成方式的微小变化会导致显着不同的时间 第一个周期在磁盘开头的区域内进行跳转 第二个周期选择磁盘上执行查找的随机区域 相同大小 这种方法显然不同 但我不明白为什么它会改变结果 请注意 对于
  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa
  • 标签

    我正在使用某人留下的遗留代码 而重新部署代码恰好是我的任务 我使用的是 Windows Server 2003 Apache 2 0 63 和 PHP 5 2 10 这不起作用 至少 不是以我期望的方式工作 如果你愿意的话 可以称之为错误
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • PHP 开发相当于 Mongrel/Webrick 吗?

    PHP 开发中是否有与 Rails 开发期间使用 Mongrel Webrick 等效的方法 我通常在端口 3000 上使用 Mongrel 在开发过程中为我的 Rails 应用程序提供服务 我从事 PHP 开发已经有几年了 据我所知 方法
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • 在 nHibernate 关系中使用实体的 Lite 版本?

    在某些情况下 出于性能原因 创建一个实体的轻量级版本 指向同一个表 但映射的列较少 这是一个好主意吗 例如 如果我有一个包含 50 列的联系人表 并且在一些相关实体中 我可能对 FirstName 和 LastName 属性感兴趣 那么创建
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定

随机推荐

  • 是否可以编写一个接受不同抽象的泛型参数的方法?

    As a 这个问题的后续 https stackoverflow com q 9890866 403455 是否可以编写一个添加Dog到合适的房间 在此示例中 它将接受Animal房间或Dog房间 或者我被迫编写如下两种不同的方法 由于类型
  • 将新行 /n 转换为角度换行符

    我有一个包含换行符 n 的字符串 尝试显示 字符串 它不会将 n 作为新行 而是将 n 显示为文本 scope myOutput Hello n myOutput textFormat 必需 gt 你好 在 html 页面上 Tried a
  • 在catplot中指定颜色

    我想使用seaborn catplot 指定特定观察结果的颜色 在一个虚构的例子中 import seaborn as sns import random as r name list pepe Fabrice jim Michael co
  • C++/CLI,类声明之外的静态构造函数

    如何将托管类的静态构造函数的主体放在类声明之外 这种语法似乎是可编译的 但它真的意味着静态构造函数 还是只是一个静态 在翻译单元之外不可见 函数 ref class Foo static Foo static Foo Foo 是的 这是创建
  • 如何模拟不会导致脆弱测试的实现细节

    我正在读一本关于单元测试的书 下面是引用和代码 不是完整的代码 因为很容易理解代码的作用 首先 作者展示了一个不会导致脆弱测试的嘲笑 Fact public void Successful purchase var mock new Moc
  • 在 Python 中验证 ISO-8601 日期时间字符串?

    我想编写一个接受字符串并返回的函数True如果它是有效的 ISO 8601 日期时间 精确到微秒 包括时区偏移 False否则 我已经发现other https stackoverflow com questions 969285 how
  • 将规则index.php?/controller/method/param重写为/controller/method/param

    我需要这个网址的重写规则 http localhost user frame lib index php controller method 12 22 我怎样才能重写它 我可以这样称呼它 http localhost user frame
  • 如何设置设备邮件发件人姓名?

    我正在使用 Rails 设计 gem 设计向新用户发送确认电子邮件 Actionmailer 配置为使用我的 Gmail 帐户发送电子邮件 电子邮件由发件人发送 电子邮件受保护 cdn cgi l email protection 这是我的
  • 无法在 Linux Mint 19.3 中安装 R 3.6.2 中的 httr 包

    我对 R 完全陌生 我尝试安装httr包裹 我首先安装了 pacman 然后尝试通过运行来加载 httrpacman p load httr 它没有成功 它在终端中显示以下消息 将包安装到 home 用户名 R x86 64 pc linu
  • hdfs 命令在 hadoop 中已弃用

    我正在关注这个程序 http www codeproject com Articles 757934 Apache Hadoop for Windows Platform YouTube 链接 https www youtube com w
  • 如何从文本框获取值

    我改变了我的问题 因为它可能不被理解 也对不起我的英语 动态创建文本框 将它们放入数组中 我的一段代码 public partial class NewArticleForm System Web UI Page private Label
  • 响应式 JavaScript:仅针对小设备宽度执行代码

    我有一些简单的 JavaScript 嵌入在事件中 我只想为小型设备触发它们 电话等 目前我正在做 if window width lt 606 do things 但这感觉很笨拙 有没有办法只对小于某个断点的设备执行此操作 除了设置较早的
  • 为什么在 asp.net 身份中验证电话号码后注销?

    我在我的项目中使用 asp net Identity 在VerifyPhoneNumber查看 当用户确认他的电话号码时 他已注销 AspNetApplicationCookie已移除 我从 资源 选项卡 检查 chrome 中检查了这一点
  • 对多个项目和配置有效使用 Visual Studio 项目属性

    我一直使用 Visual Studio 内置的 GUI 支持来配置我的项目 通常使用属性表 以便多个项目将使用通用集 我对此的主要抱怨之一是管理多个项目 配置和平台 如果您只是使用主 GUI 执行所有操作 右键单击项目 gt 属性 它很快就
  • 如何用 GridLayoutManager 从右到左填充 RecyclerView

    我正在尝试将一些数据填充到RecyclerView with GridLayoutManager GridLayoutManager layoutManager new GridLayoutManager this 3 GridLayout
  • Visual Studio 2012 包管理器控制台错误

    当尝试使用包管理器控制台安装任何内容时 我收到此错误 Install Package The schema version of Microsoft Bcl is incompatible with version 2 0 30625 90
  • Coq:添加“强归纳”策略

    对自然数的 强 或 完全 归纳意味着当证明 n 上的归纳步骤时 您可以假设该属性对于任何 k 都成立 Theorem strong induction forall P nat gt Prop forall n nat forall k n
  • 常规网络服务

    我尝试过使用http groovy codehaus org GroovyWS http groovy codehaus org GroovyWS 在我的 BuildConfig groovy 中 我添加了 compile org code
  • 使用YQL多查询&XPath解析HTML,如何转义嵌套引号?

    标题比它必须的更复杂 这是问题查询 SELECT FROM query multi WHERE queries SELECT FROM html WHERE url http www stumbleupon com url http www
  • PHP 动态调整图像大小与存储调整大小的图像

    我正在构建一个图像共享网站 想了解使用 PHP 动态调整图像大小并存储调整后的图像的优缺点 哪个更快 哪个更可靠 两种方法在速度和性能上差距有多大 请注意 无论哪种方式 图像都会通过 PHP 脚本进行统计 例如视图 或者是否允许热链接等 因