PHP 是读取数据库在模版遍历快还是 从文件读取html快?
PHPz
PHPz 2017-04-11 10:31:59
[PHP讨论组]

之前在做一个商城网站,有一个模块是定制首页,时间赶直接提取页面html内容用php写进文件里,首页读取的时候,再读取那个文件输出给模版。题目的读取数据库指读取定制数据,不是html内容。

现在不赶时间了,想知道:

  1. 如果在多人访问并发高的情况下,是读取文件快?还是从数据库读取数据快?

  2. 如果写入文件内容多,文件比较大的情况是不是读取时间慢?

  3. 我用的TP框架,直接在模版里会不会更好

  4. 再问一下,想测试并发要怎么测试?要搜哪些关键词?

ps:刚出来工作的小白,求回答指教

PHPz
PHPz

学习是最好的投资!

全部回复(3)
阿神
  1. 数据库的数据也是存在文件里的,不考虑数据库做内存缓存的情况,单纯读文件当然要比读数据库快,因为数据库还要经过查询过程以及其他处理流程。但是,如果文件数量过多时,还需要考虑文件系统的查询速度,这个速度在文件过多时是慢于数据库查询的。

  2. 文件读取时间自然取决于文件的大小,但是如果文件中所有的内容都是你想要的,这个时间自然是不可缺少的。如果你只想读取部分的文件内容,可以通过seek来移动文件指针。

  3. TP框架的模板是进过编译的,也就是说,实际执行时不会使用你写的模板文件,而是使用编译后的模板,所以你大可放心的使用include,不必在意性能的问题。

  4. 并发测试准确来说应该叫压力测试,搜索压力测试方案即可。

迷茫

针对你的问题,

  1. 高并发的情况下,直接数据库肯定会很慢,至少在数据库上有一个Cache层,Cache层效率:

    文件 < 内存(memcache、redis) < Cache阵列
    文件也属于Cache的一种

    看你的需求貌似还有生成静态文件的步骤,这里提供你几个关键词:

    • ob_start

    • 伪静态

    • CDN

  2. 如果写入的文件内容多,这个没办法,我们一般会使用Cache等来做整体架构方案,而非单纯写入这么简单

    如果读取的文件(特指PHP文件)比较大,考虑开启OpCache加强速度

  3. 你这是include一个模板文件,也就是PHP执行的include,效率等同PHP的include
    如果访问的页面全部静态文件,需要嵌入子模板的情况,SSI(ApachenginX)会比PHP的include快很多

    所以,你问题的答案:HTML 是最快的,都无需执行PHP,但是需要提前生成好

  4. 并发测试,从关键词apache benchmark开始,接下来你会搜到很多你想要的内容。

怪我咯

首先,它们速度区别不大,文件快点,但是如果都放数据库好管理一些。

其次呢,谁快不重要,这些CMS类型的网站,可以通过静态化来进行优化,静态化后和页面生成时间就无关了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号