ThinkPHP5.1.14 版本发布增加路由缓存,又双提速啦! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
topthink
V2EX    推广

ThinkPHP5.1.14 版本发布增加路由缓存,又双提速啦!

  •  1
     
  •   topthink 2018-05-18 13:40:03 +08:00 8004 次点击
    这是一个创建于 2705 天前的主题,其中的信息可能已经有所发展或是发生改变。

    V5.1.14 版本主要对底层容器进行了一些优化改进,并增加了路由缓存功能,可以进一步提升 30%以上路由性能。支持上一个版本的无缝更新!官方完全开发手册已经同步更新。

    注意:如果 composer 更新不了,可以尝试 remove topthink/think-testing 扩展后 再次更新。

    主要更新日志:

    • 依赖注入的对象参数传入改进
    • 改进核心类的容器实例化
    • 改进日期字段的读取
    • 改进验证类的getScene方法
    • 模型的create方法和save方法支持replace操作
    • 改进Db类的调用机制
    • App 类调整为容器类
    • 改进容器默认绑定
    • Loader类增加工厂类的实例化方法
    • 增加路由变量默认规则配置参数
    • 增加路由缓存设计
    • 错误处理机制改进
    • 增加清空路由缓存指令

    ThinkPHP 官方小组

    2018-5-18

    第 1 条附言    2018-05-18 22:34:31 +08:00
    看到很多人其实对 TP 的路由不是特别了解,TP5.1 的路由解析机制和匹配算法、缓存机制和 Laravel 的完全不同,TP5.1 的路由分三段式提速:

    第一次提速 V5.1 第一个版本,路由延迟解析,不匹配的分组路由不会去解析;
    第二次提速是在 V5.1.7 版本,重写了路由的匹配算法,一个路由分组的路由只需要匹配检测一次;
    第三次提速是这次的 V5.1.14 版本(似乎很巧合的逢 7 提速~),路由缓存,相同的路由请求第二次可以直接跳过路由解析进行调度请求。
    第 2 条附言    2018-05-19 15:44:24 +08:00
    其实在 TP 的每个我认为还算是比较重要的更新版本的时候,我都会例行在 V2 上发一个发布贴,其实并非为了推广,而是考虑到 V2 上也有 TP 的用户群,就好比我同时也会去开源中国发布一样,TP 的帖子一向在 V2 不温不火,所以我并没有想到这次会导致一些人对我们的意见和看法。

    其实,我从来也不怕质疑和指名道姓的批评,只要有理有据,而不是摸不着头脑的说法,我也很无奈,我相信任何一个国外或者国内的框架(或者说开源产品)都有自己的用户群,但根本没有必要贬低别人来抬高自己,我一直都没有否认 Laravel 的优秀,要不然 TP5 也不会吸收很多 Laravel 的思想,尤其是作为 PHPer 的一些规范和主流设计思想,这也是很多现代框架也越来越趋同的原因之一,但每个框架都有自己的差异化、创新甚至亮点,这也是不能否认的。

    在吸收精华的同时,TP 也完全没有必要去复制一个 Laravel 出来,尤其是在国情下面需要对自己的用户群提供更好更适合的产品,我们一直坚持在完善和改进 ThinkPHP,无论是好是坏,我们在努力,很多人可能觉得开发一个和 TP 一样的甚至更好的框架是一个很简单的事情,但这个事情并不是难在技术本身,而是难在你能一直坚持做好,哪怕一直在受别人的诋毁和谩骂,因为我们做这个产品的初衷不同。而且,就算不完美,我还不至于厚着脸皮提供一个人人叫骂的产品,我们的用户也都不傻,知道在什么时候如何选择适合自己的产品~

    最后,ThinkPHP 一直坚持免费开源,我没有推广的必要和动力,我只是告诉这个世界我们还活着,而且一直在更新,也没有时间在 V2 发技术贴,我相信 V2 没有要求在技术板块只能发技术贴吧。

    ThinkPHP 我思故我在!
    64 条回复    2018-05-30 12:19:06 +08:00
    aqtata
        1
    aqtata  
       2018-05-18 14:29:30 +08:00
    "ThinkPHP5.1 的运行环境要求 PHP5.6+"
    KgM4gLtF0shViDH3
        2
    KgM4gLtF0shViDH3  
       2018-05-18 15:27:17 +08:00
    为开源做贡献的人总是伟大的。
    puritania
        3
    puritania  
       2018-05-18 15:27:55 +08:00
    说的好 我选择 yaf
    Evilk
        4
    Evilk  
       2018-05-18 15:35:34 +08:00
    yaf+yar
    leven87
        5
    leven87  
       2018-05-18 19:06:01 +08:00
    我感觉 thinkphp5.1 很多都是照着 laravel 的路数做
    ben1024
        6
    ben1024  
       2018-05-18 19:10:35 +08:00
    支持支持,很不错,我选择 Laravel
    caola
        7
    caola  
       2018-05-18 19:14:14 +08:00
    支持支持,很不错,我选择 Laravel
    conwey
        8
    conwey  
       2018-05-18 19:14:34 +08:00
    很不错,适用。
    dcsite
        9
    dcsite  
       2018-05-18 19:23:11 +08:00
    支持支持,很不错,我选择 ThinkPHP5
    1762628386
        10
    1762628386  
       2018-05-18 19:34:03 +08:00
    不错不错 我选择 composer 自己搭[doge:]
    agdhole
        11
    agdhole  
       2018-05-18 19:51:31 +08:00
    支持支持,很不错,我选择 Laravel
    artisan route:cache
    topthink
        12
    topthink  
    OP
       2018-05-18 21:10:00 +08:00   8
    这世界上不会只有 Laravel 一个框架,也没有完美的框架,存在即是价值。没有真正用过就不要随便去指指点点其它框架,Laravel 的路由根本不能和 TP5 的路由同日而语~
    xiaoyanbot
        13
    xiaoyanbot  
       2018-05-18 21:28:42 +08:00
    支持支持,很不错,我选择 ThinkPHP5
    dwyyy
        14
    dwyyy  
       2018-05-18 21:45:29 +08:00
    感谢开源!
    KgM4gLtF0shViDH3
        15
    KgM4gLtF0shViDH3  
       2018-05-18 21:46:02 +08:00 via iPhone
    @agdhole 好厉害,竟然会用命令,你好棒棒
    yunye
        16
    yunye  
       2018-05-18 21:50:43 +08:00
    加油
    batnss
        17
    batnss  
       2018-05-18 21:57:33 +08:00
    加油 !
    tabris17
        18
    tabris17  
       2018-05-18 22:03:14 +08:00
    不错不错,我选择 symfony
    DavidNineRoc
        19
    DavidNineRoc  
       2018-05-18 22:03:59 +08:00 via Android
    排版至少好看点吧,让我一下子能看清楚 TP 嗯优势,每一个功能前面带一个 *,写代码那么久很用心,推广一下子不用心?
    topthink
        20
    topthink  
    OP
       2018-05-18 22:17:07 +08:00
    @DavidNineRoc 抱歉,并非推广文(其实确实很少推广,时间都花在更新和技术支持上了),而是版本更新贴子而已,特性在官方的开发手册中会说的比较详细一些~
    话说,我很少在 V2 上面看到排版特别好看的技术文章,也许是 v2 的编辑器不是特别容易排版吧
    dacainiaoxe
        21
    dacainiaoxe  
       2018-05-18 22:30:00 +08:00
    好久没登陆了,特地登录支持。支持开源
    bSty
        22
    bSty  
       2018-05-18 22:30:07 +08:00
    支持 很不错的一直在用!
    aice114
        23
    aice114  
       2018-05-18 23:32:39 +08:00 via Android
    支持一个!
    sss3600123
        24
    sss3600123  
       2018-05-18 23:41:56 +08:00 via iPhone
    支持,加油
    sudoz
        25
    sudoz  
       2018-05-18 23:48:19 +08:00
    虽然不写 PHP,但支持开源的贡献者
    cdwyd
        26
    cdwyd  
       2018-05-18 23:52:24 +08:00
    感谢 支持!一直再用
    说点感受:
    主要是手册部分,示例代码太少,很多时候一大段的文字说明还不如几行代码更加清晰易懂。
    另外就是部分功能手册上没写出来,比如 移除 html 中的空白符这个功能在手册中没有给出用法,默认配置上也没有 strip_space 这个参数,看了源码才知道怎么用
    1762628386
        27
    1762628386  
       2018-05-18 23:52:27 +08:00   1
    支持 虽然以前也喷 TP
    但等到自己做开源项目的时候 才知道是何等的不容易
    ThinkPHP 应该是国内生态最好的 php 框架了
    抄起 phpstorm 一把梭 要都是用 Laravel symfony2 不知道因为开发效率又要凉多少公司 太纠结技术框架没啥意思
    guiqiqi
        28
    guiqiqi  
       2018-05-19 03:59:49 +08:00 via iPhone   1
    谢谢作者发帖,楼上很不错+我选择的杠精已经全部 block
    guiqiqi
        29
    guiqiqi  
       2018-05-19 04:07:34 +08:00 via iPhone   3
    支持开源项目!
    虽然不写 PHP,也算不上专业的程序员,可是看到开源的项目总是被一群人打击,感觉很不舒服。
    自己也写过一点点的开源代码,虽然质量很差,但是希望得到的是反馈。哪里有什么样的问题,希望有什么功能,甚至自己做过类似的一些好的项目也可以拿出来晒晒,我觉得这才是良好的社区讨论氛围。

    现在的 v 站,不管写什么东西,总会有一些人在底下抬杠,看到一个 block 一个。
    openplatform
        30
    openplatform  
       2018-05-19 07:35:55 +08:00
    框架什么的,只是一个手段。
    不要局限于一个框架。
    任何框架都是要去学习和了解一下的。
    如果让你接手一个 wordpress 做的网站咋办呢?
    chiu
        31
    chiu  
       2018-05-19 08:37:34 +08:00 via Android
    不写 php,但支持开源贡献者!
    heybuddy
        32
    heybuddy  
       2018-05-19 08:53:24 +08:00 via Android
    支持 tp 一个!
    xhinliang
        33
    xhinliang  
       2018-05-19 08:59:31 +08:00
    没用过 TP,但是支持一个!
    ashen
        34
    ashen  
       2018-05-19 09:03:34 +08:00
    支持开源项目!
    salamanderMH
        35
    salamanderMH  
       2018-05-19 09:51:37 +08:00
    支持,但用 slim
    MrLin
        36
    MrLin  
       2018-05-19 09:53:26 +08:00
    支持开源项目!
    run2
        37
    run2  
       2018-05-19 10:14:44 +08:00
    支持开源项目!但可以不要在 v2 发了么, 全是推广 有一篇技术文章么?转载也算
    run2
        38
    run2  
       2018-05-19 10:19:13 +08:00
    @guiqiqi #29 你连 thinkphp 和 laravel 都没了解过纠结怎样 就说别人是杠精也是个人才。。。
    linxb
        39
    linxb  
       2018-05-19 10:59:47 +08:00
    项目赶时间的情况下,thinkphp 一把梭哈从来没让我失望
    e9e499d78f
        40
    e9e499d78f  
       2018-05-19 11:02:52 +08:00 via iPhone
    这能不是推广文?
    t2doo
        41
    t2doo  
       2018-05-19 11:05:51 +08:00
    升级到 5.1.4 以后,new Request()报错啦,只能 request()这样用啦?
    topthink
        42
    topthink  
    OP
       2018-05-19 12:19:48 +08:00
    @t2doo Request 对象是容器中单例的 不能自己创建,大多数场景都是依赖注入就行了
    twoyuan
        43
    twoyuan  
       2018-05-19 12:37:43 +08:00
    支持,虽然我不写 PHP
    m939594960
        44
    m939594960  
       2018-05-19 12:44:30 +08:00
    @guiqiqi
    首先开源与开源不一样,如果你靠这个开源项目赚的盆满钵满的,但是本身项目的质量不怎么样还不让别人嘲讽了?
    第二 PHP 这个行业本身门槛就够低,一群连鼠标都永不灵活的人就能写 PHP 代码了,而 TP 又是 PHP 里对中国人门槛最低的框架,导致很多人啥也不懂就无脑吹,无脑洗。其实就跟 TFBoys 这些明星一样,有很多人了解可能并不深,但是他们的粉丝让很多人很烦,所以喜欢他的人还是无脑喜欢,不喜欢的人烦的不行。
    linpf
        45
    linpf  
       2018-05-19 14:44:21 +08:00   3
    支持一下!

    V2 上的风气我越来越看不懂了。感觉你们都是神仙,在天上飘着。看不惯我们凡人用斧头砍树了怎么?

    在下就楼上描述中的那种连鼠标都用不灵活的人,所以我就来无脑吹无脑洗 TP 了。

    很多人可能 TP3 时代的时候接触过 TP,觉得接受不了,然后把印象带到了现在的 TP5。虽然 TP5 的确有很多 Larvel 或者 Yii 里没有的优点,但是反之 Laravel 或者 Yii 也有很多地方不如 TP5 啊。这个时候你们怎么不见喷了。

    当你自己选择双标的时候,不要怪别人 block 你。

    Laravel 的缺点是运行资源消耗太多,运行时间太久。开发的时候是爽了,但是考虑一下服务器成本啊。这个时候很多杠精就来说,90%多的网站是不会出现脚本运行上的瓶颈的,数据库\IO 才是瓶颈。那零点几秒的时间,用户是无法察觉的,没有必要。

    这一点我承认,用 Laravel 开发个人项目或者访问量肯定不会太高的网站,那没问题,也是很棒棒了。但是如果作为商业网站对外提供服务,是不是如果能够有更高的访问速度和抗压能力是不是更合适?或者你们觉得老板希望自己的网站的流量这辈子都摸不到脚本运行的瓶颈么?

    如果老板问到这个问题,八成你们会回答:一台服务器不够那就负载均衡啊,加机器呗!

    要是老板能答应……也就是老板不懂……或者老板也是个技术控陪着你们玩。

    多加一台机器,不是钱么?不要跟我说人力工资多高,服务器才几个钱。每个月一台机器是不高,但是日积月累下来呢?

    另一方面,Laravel 学起来友好吗?一点不友好吧。TP 有着很详细的中文文档手册(希望能够再丰富一下,对于很多新手来说还是不足),就算不是手把手教学,也比 Larvel 和 Yii 那种手册要友好的多吧。什么时候手册丰富学习难度低,都可以成为被喷的理由了?

    开源软件就算赚的盆满钵满,那也是开源软件。难道没有人利用 Mysql 赚钱么?然后 TP 项目质量不怎么样…… emmmn,我很难理解作为用户量第一的国产 PHP 框架吗,作为一个发展了 12 年的老牌框架,使用率不但没有下滑反而还风头正胜,你说质量不怎么样,谁给你的勇气?梁静茹吗?

    对了,为了防止被某一楼层扣帽子,我最后声明:Larvel 我用过,还有 Lumen,还有 Yii2。我是不是有资格说别人是杠精了?
    oovveeaarr
        46
    oovveeaarr  
       2018-05-19 14:53:19 +08:00   1
    Laravel 性能问题,我觉得已经远远超出了“ 90%多的网站是不会出现脚本运行上的瓶颈的,数据库\IO 才是瓶颈”。
    在我的 Atom 下初始化要 0.3s 。。优化全做上 php7.1 都没什么用,顶多到 0.2s ,初步排查是因为默认配置载入太多文件。
    (不要说 Session 和中间件问题,都要用的。
    然而 TP 跟原生差不了多少,难受。
    run2
        47
    run2  
       2018-05-19 15:02:20 +08:00
    @linpf #45 都是在表述不同意见,为啥非要给人标上“杠精”的标签不可?
    扣帽子难道是在说我
    linpf
        48
    linpf  
       2018-05-19 16:43:35 +08:00
    @sobigfish 表述意见没问题,但是“你说得很好,然而我用 XX ”这种文体是什么含义还需要解释吗?不喜欢不用就行了,不应该通过拆台来刷存在感。
    linpf
        49
    linpf  
       2018-05-19 16:46:44 +08:00
    @oovveeaarr Larvel 不是自称是为艺术家而生的嘛,也就好理解了,Larvel 写出来的东西是艺术品。看起来很美,用起来还是不够接地气!
    linpf
        50
    linpf  
       2018-05-19 16:50:59 +08:00
    由于打错了一次 Laravel,导致后面被输入法默认都补全了“ Larvel ”,希望大家无视这个 BUG~
    bromineMai
        51
    bromineMai  
       2018-05-19 17:36:40 +08:00
    @puritania yaf 的加载器好恶心
    baiy
        52
    baiy  
       2018-05-19 17:51:07 +08:00
    就用了一个 Laravel 看把一些人瑟的 不知道那里来的优越感 @topthink 完全可以无视这群的人
    run2
        53
    run2  
       2018-05-19 18:00:59 +08:00
    @baiy 感觉不是优越感 而是两个一起嘲讽
    国内 php 培训以前钟情于 thinkphp 现在转向 laravel 所以大家见到的 thinkphp 和 laravel 的坑货都不少
    Framework 而已,都是工具 不都是处于他们鄙视链的下端么
    ibugeek
        54
    ibugeek  
       2018-05-20 14:20:24 +08:00
    用 Laravel 也用 TP,两边都支持。
    RobertLee
        55
    RobertLee  
       2018-05-20 15:09:28 +08:00
    666
    NEETLEE
        56
    NEETLEE  
       2018-05-20 20:20:43 +08:00
    谢谢 tp 框架开发者们的努力,你们是国产框架的骄傲。我们 leader 前阵子终于默认同意从 tp3 升级到 tp5 ( 5.0 ),我觉得 tp5 真的挺好,替开发者处理了很多事情,还有很多好用的轮子。
    topthink
        57
    topthink  
    OP
       2018-05-20 22:14:56 +08:00
    @NEETLEE 感谢支持,其实这个时候不妨考虑 5.1 比 5.0 更规范更好用哇,尤其是路由这块~
    miniapp
        58
    miniapp  
       2018-05-21 09:10:38 +08:00
    支持 TP 越做越好 , 谢谢 TP 开发者的努力
    yxn1910
        59
    yxn1910  
       2018-05-21 11:12:28 +08:00   1
    thinkphp 作为国内当之无愧的第一梯队主流框架,的确存在这样或那样的问题,使用者和项目也大都比较草根,不过这几年开发者们的努力成长大家有目共睹,也深感坚持开源工作的不易。
    立足于用简单高效的方式解决开发中的问题作为框架的定位个人认为是没有问题的,这也是 TP 这些年能够大范围被使用的重要原因:不哔哔,脚踏实地的解决问题。
    优雅固然中要,但是不分场合不顾实际的“优雅”就是不雅。部分人一看到 TP 字眼就无脑喷确实令人及其反感,希望大家不要局限于框架之争,少谈些主义,多干些实事。同时希望 TP 的开发团队能坚持不忘初心,在使用更合理的架构和设计的同时不要把框架变成一个拖沓冗余缓慢低效的怪物,以上。
    abccccabc
        60
    abccccabc  
       2018-05-21 14:28:43 +08:00
    我希望 TP5.2 牛 B 哄哄,干翻其它框架,呵呵。说笑呢。根据我的经验:3.0 比 2.X 牛 X,3.1 比 3.0 改进了一些,3.2 比 3.1 更时毛了一点; 5.0 赶上了现代时毛,5.1 比 5.0 更为规范一些,我猜 5.2 更时毛、更规范、更牛 B。

    很是期待。
    topthink
        61
    topthink  
    OP
       2018-05-21 15:38:27 +08:00
    @abccccabc 5.1 除了不是基于 PHP7 开发的(但是是兼容 PHP7+的 最近发现 PSR 库都还是基于 PHP5.4+ 很让人无语) 其它的特性其实基本都不缺了,是一个非常建议的版本。我们之所以还在不断打磨和改进 5.1 的细节,是希望把 5.1 做成一个长期支持的版本,所以把原先计划在 5.2 引入的一些特性提前在 5.1 实现,无论是性能、稳定性还是功能和开发效率上都能满足,能作为一个实用性很强的框架。事实上,现在用 3.2 的用户还有很多,在他们眼中,其实功能已经够用,而且足够简单。至于 5.2 版本定位 PHP7.1+,但不会盲目追求新技术(至少核心没有这个必要),可能更加关注整个生态的建设,一个框架本身不会牛 B 到天上去的,我们也没这个野心和水平(放眼望去,国内的牛人太多了,V2 就藏龙卧虎),我们只是希望做好自己能做的事情,真正能够给开发者带来帮助的是有大量的贡献者参与贡献,并催生这个生态的成熟。而这个正是国内开源项目最大的欠缺,或者是我们的姿势不对^_^
    silverpeak
        62
    silverpeak  
       2018-05-29 17:38:32 +08:00
    tp 不错,laravel 是给艺术家们用的
    flyshu
        63
    flyshu  
       2018-05-30 11:40:16 +08:00
    TP3 看开始用,到 TP5 开始真正做项目,感觉 TP 真的是很方便的,即开即用
    topthink
        64
    topthink  
    OP
       2018-05-30 12:19:06 +08:00
    @flyshu/a>
    @
    silverpeak
    感谢支持,5.1 仍然在持续改进和优化中,比 5.0 更好用~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2759 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:07 PVG 23:07 LAX 08:07 JFK 11:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86