PHP 中包含缓存以供迭代重用

2024-02-10

有没有办法缓存 PHPinclude有效地重复使用,无需 APC 等?

Simple (尽管愚蠢) 例子:

// rand.php
return rand(0, 999);

// index.php
$file = 'rand.php';
while($i++ < 1000){
    echo include($file);
}

同样,尽管很荒谬,这对脚本转储了 1000 个随机数。然而,对于每次迭代,PHP 都必须访问文件系统(正确的?我没有错过任何继承缓存功能,不是吗?)

基本上,如何防止前面的场景导致文件系统出现 1000 次点击?

到目前为止我唯一考虑的是一个愚蠢的想法,而且它可能根本不起作用(还没有测试过,写在这里,容易出错,但你明白了):

// rand.php
return rand(0, 999);

// index.php
$file = 'rand.php';
$cache = array();
while($i++ < 1000){
    if(isset($cache[$file])){
        echo eval('?>' . $cache[$file] . '<?php;');
    }else{
        $cache[$file] = file_get_contents($file);
        echo include($file);
    }
}

一个更现实且不那么愚蠢的例子:

当包含用于视图生成的文件时,给定视图文件在给定请求中使用多次(一个小部件或其他东西)是否有一种现实的方法可以在不影响文件系统的情况下捕获并重新评估视图脚本?


仅当通过网络访问包含文件时,这才有意义。

我没有错过任何继承缓存功能,不是吗?

所有操作系统都经过高度优化,可减少物理 I/O 量并加快文件操作速度。在大多数情况下,在正确配置的系统上,系统很少会恢复到磁盘来获取 PHP 代码。坐下来拿着电子表格,想一想如果每个文件都必须从磁盘中获取,那么处理 PHP 代码需要多长时间 - 这将是荒谬的,例如假设您的脚本位于 /var/www/htdocs/index.php 中并包含 /usr/local/php/resource.inc.php - 这是 8 个查找操作来定位文件 - 每个 @8ms,查找文件需要 64ms !在您的测试用例上运行一些计时 - 您会发现它的运行速度比这快得多。

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

PHP 中包含缓存以供迭代重用 的相关文章

  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • 如何在数据列表 HTML PHP 中设置选择

    您好我想知道是否有一种方法可以在数据列表中设置选定的值 我想要这样的东西
  • PHP 正则表达式匹配字符串的最后一次出现

    我的字符串是 text1 A373R12345 我想找到该字符串最后出现的非数字数字 所以我使用这个正则表达式 0 9 然后我得到这个结果 1 A373 2 12345 但我的预期结果是 1 A373R 它有 R 2 12345 另一个例子
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 使用 phpdocx 下载损坏的 .docx

    我有一个项目 我们使用 phpdocx pro 在模板中生成 docx 文件 我可以很容易地将数据输入到模板中 但是当下载文件并在 MS Word 2010 中打开时 程序报告无法打开文件 因为内容存在问题 详细信息是 文件已损坏 并且无法
  • 这个巨大的正则表达式是如何工作的?

    我最近在我的一个目录中的一个名为的文件中找到了下面的代码doc php 文件功能或链接到文件管理器 做得非常好 基本上 它列出了当前目录中的所有文件 并且允许您更改目录 它可以访问我的所有文件 添加 重命名 信息 删除 我不记得安装过它 我
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • 切换到 mysqli 是个好主意吗?

    我正在考虑为我的所有 php 项目切换到 mysqli 我的代码编写方式 我运行非常简单的网站并构建了自己的基本框架 我在所有网站上使用该框架 我在修改函数和类时不应该遇到太多问题 然而 我只听说过关于准备好的语句的积极的事情 除了一些关于
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • 如何在CentOS 5.3上安装php-mongodb?

    我已经在我的 VPS 上安装了 mongoDB 效果很好 现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作 我跟着蒙戈安装 http www php net manual en mongo installation
  • json_encode 返回 NULL?

    由于某种原因 项目 描述 返回NULL使用以下代码 这是我的数据库的架构 CREATE TABLE staff id int 11 NOT NULL AUTO INCREMENT name longtext COLL
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • PHP 中的encodeURI() ?

    PHP 中是否有一些不编码的encodeURI 函数 我现在用这个 function encodeURI url http php net manual en function rawurlencode php https develope
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia

随机推荐

  • 如何在 MAC OSX 中拆分 sql?

    有没有适用于Mac的应用程序可以分割sql文件甚至脚本 我有一个大文件 必须将其上传到不支持超过 8 MB 的文件的主机 我没有 SSH 访问权限 你可以使用这个 http www ozerov de bigdump http www oz
  • 更改查询字符串中的单个变量值[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我得到了一
  • 预加载多个音频文件

    我的网页上有一个音频控件 我希望用它来根据页面的状态播放多个非常短的音频文件 我不想在播放文件时加载它们 如何在页面加载时加载所有这些文件 这是我正在做的事情的粗略想法 http jsfiddle net L0c9ccx9 20 http
  • 如何从 JSP 运行 shell?

    我的问题是不言自明的 我想使用按钮从 JSP 运行一个 shell 即调用一个过程 程序是 CREATE OR REPLACE PROCEDURE DEMO PRC dist IN variable mrno IN variable yr
  • 使用增强赋值将字符串添加到列表

    gt gt gt b gt gt gt c 1234 gt gt gt b c gt gt gt b 1 2 3 4 gt gt gt 这里发生了什么 这应该行不通 对吧 或者我错过了一些明显的东西 gt gt gt b gt gt gt
  • MongoDB 更新嵌套数组中的字段

    MongoDB 更新嵌套数组中的字段 如何将 播放 设置为 播放照片 photos array 我只知道它的 id id ObjectId 4f41a5c7c32810e404000000 albums id ObjectId 4f545d
  • 如何在 Docker 上发布 UDP 端口?

    如何将 UDP 端口从 Docker 容器转发到主机 使用 p 标志并添加 udp端口号的后缀 p 53160 53160 udp 完整命令 sudo docker run p 53160 53160 p 53160 53160 udp p
  • Spring Boot 始终使用相同的配置文件

    我正在使用 spring boot 1 5 2 并使用配置文件 但我发现了一个非常奇怪的事情 my spring boot resources folder like this application yml 中的配置 spring pro
  • 如何在 AFNetworking 2.0 中设置请求超时和缓存策略?

    我正在遵循给定的示例代码 AFHTTPRequestOperationManager manager AFHTTPRequestOperationManager manager manager GET http example com re
  • Azure Functions - 监视器 - 我可以恢复旧视图吗?

    在 Azure Functions 中 Azure 门户中的监视器视图已更改为显示 配置应用程序洞察 如何恢复旧的简单视图 第二次更新 2 x 运行时不会将日志 由 ILogger 提供 发送到使用的表Azure WebJobs Dashb
  • 如何从文件中删除 xml 元素?

    在 XML 文件中 例如
  • 使用 javascript 验证 MVC3 中的表单

    我只需要一个验证示例 剩下的我会做 假设我有一个文本类型的输入 p p
  • 如何在Eclipse中制作只读编辑器(Eclipse插件开发)

    我想知道如何制作一个真正只读的 Eclipse 编辑器 我的编辑器扩展了文本编辑器 所以当我重新实现方法时是可编辑的总是回来false 这是最简单的方法 可以防止用户在编辑器中打开的文档中键入或删除任何内容 但您仍然可以更改文档的内容 例如
  • 将名称添加到 Spree Devise 注册中

    我正在尝试添加姓名和出生日期来设计 Spree 注册 我已经安装了宝石 gem spree auth devise github spree spree auth devise branch 3 0 stable 创建了迁移 class A
  • Xamarin.Forms:如何设置“GestureRecognizers”样式

    这可能是一个愚蠢的问题 但我只是想知道 因为我是 Xamarin forms 的新手 我们可以在 Style 中设置 GestureRecognizers 吗 例如 我想为标签创建一个样式 如下所示 但它显示编译时错误 无法解析标
  • 在.NET/SQL 中参数化表名?

    正如主题所示 我希望能够使用 NET 实际上使用哪种语言 和 SQL Server 将表名作为参数传递 我知道如何为价值观做到这一点 例如command Parameters AddWithValue whatever whatever u
  • 如何在 Java DateUtils.parseDate 中识别祖鲁时区?

    我有以下格式的日期2008 12 23T00 00 00Z 这看起来很像ISO 8601 格式 http en wikipedia org wiki ISO 8601采用祖鲁语 UTC 时区 我虽然下面的代码会解析它 使用公共语言 http
  • 在python中如何在其静态方法中获取类的名称

    如何在静态方法中获取类的名称 我有继承 并想要派生类的名称 在下面的例子中 应该用什么来代替XXX在方法 my name 中 class snake staticmethod def my name print XXX name class
  • 为什么C的printf格式字符串同时有%c和%s?

    为什么C的printf格式字符串两者都有 c and s 我知道 c代表单个字符并且 s表示一个以 null 结尾的字符串 但是仅仅字符串表示还不够吗 可能是为了区分以空结尾的字符串和字符 如果他们刚刚有 s 那么每个字符也必须以空字符结尾
  • PHP 中包含缓存以供迭代重用

    有没有办法缓存 PHPinclude有效地重复使用 无需 APC 等 Simple 尽管愚蠢 例子 rand php return rand 0 999 index php file rand php while i lt 1000 ech