V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellowwo
V2EX  ›  PHP

在国内使用 laravel 开发的公司多吗,这么优美的框架开发起来是不是很舒服?

  •  
  •   hellowwo · 2017-04-28 16:23:16 +08:00 · 32305 次点击
    这是一个创建于 2775 天前的主题,其中的信息可能已经有所发展或是发生改变。
    150 条回复    2019-08-18 16:11:02 +08:00
    1  2  
    ovear
        101
    ovear  
       2017-04-30 17:04:26 +08:00
    @sagaxu
    这不是我说的啊,作者表示我很为难啊,到底是哪国人了
    https://www.v2ex.com/t/342074
    https://www.v2ex.com/t/250863
    https://www.zhihu.com/people/evanyou

    尤雨溪不会搞艺术的程序员不是好设计师
    居住地
    现居新泽西
    所在行业
    互联网
    职业经历
    Vue.js · Chief Procrastination Officer
    Meteor · Core Dev
    谷歌 (Google) · Creative Technologist
    教育经历
    Parsons School of Design · MFADT
    柯蓋德大學( Colgate University ) · Art & Art History
    个人简介
    http://evanyou.me
    https://github.com/yyx990803
    http://vuejs.org


    另外你举例的问题是页面太狭窄了,打个比方,日本流行游戏制作框架 http://www.nscripter.com/
    https://onscripter.osdn.jp/
    都是很少英文的,有也只是一部分,但是他就是成功了呀。
    人家日本可以用国产,怎么到我国来就是不使用英语作为第一语言的就一定不成功了。
    真是奇了怪了,又是外国的月亮更圆的论调?
    zencoding
        102
    zencoding  
       2017-04-30 17:10:08 +08:00
    开发时顺的一 B,压测时慢的一 B
    lianxiaoyi
        103
    lianxiaoyi  
       2017-04-30 17:23:03 +08:00 via Android   ❤️ 1
    曾经因为这个框架离职一家公司,这个框架封装的太狠,性能又差,你框架再怎么优雅,里面写的一团糟,也是垃圾!后来听里面同事说,4 台 8 核机器扛不起每秒 1000 人访问,然后准备通宵改原生!
    msg7086
        104
    msg7086  
       2017-04-30 17:28:39 +08:00
    @lianxiaoyi 8 核……就算是前几代的双路 x5650 也有 12 核了。
    双路 x5650 的成本算 500 刀一台,就算上 10 台也就 5000 刀,差不多是 1-2 个工程师的月薪而已。
    只有在工程师月薪惨不忍睹的情况下才值得花钱去改原生。
    sagaxu
        105
    sagaxu  
       2017-04-30 18:19:54 +08:00
    @ovear
    vue 作者是复旦附中毕业的,大学才去的美国,就成美国人了?

    点开一看首页还是英语多于日语,https://onscripter.osdn.jp/onscripter.html,而且这个并不能算主流游戏引擎,英文文档不好,是出不了日本国门的。跟 ruby 相比,恐怕你举的例子,流行程度接近于零了吧。

    IT 发源地是美国,前沿技术和概念也大都来自美国,不用英语,等于主动把自己排除在最大最强的社区之外了。
    如果 linus 当年用芬兰语,C++,C#和 PHP 之父都用丹麦语,python 之父用荷兰语,可能都要无人问津了。

    不是哪国月亮圆的问题,IT 技术的东西,英语圈就是绝对垄断了,日语圈不行,德语圈也不行,法语圈也不行,汉语圈当然也一样不行。把自主和国产拿出来说事的时候,已经是玻璃心和深深的自卑感了。
    bianhua
        106
    bianhua  
       2017-04-30 18:24:51 +08:00
    @msg7086 你要开始这么比了,那就进怪圈了。

    @lianxiaoyi 我倒想知道是什么情况导致了性能如此之慢。比如是否运行在生产模式,以及是否开启了 OpCache。
    printempw
        107
    printempw  
       2017-04-30 18:26:05 +08:00
    嫌臃肿的,性能敏感的项目就不要用嘛……用 Slim 呀 Lumen 之类的微框架不就好了
    用 Laravel 的话,开发速度肯定要比微框架 /原生快得多(当然你写个 Hello World 之类屁大点玩意肯定是感受不到的),而且性能问题可以堆钱解决啊 :D 没钱又要高并发,参见上一句

    我用于练习 PHP 而写的一个项目( printempw/blessing-skin-server ),从 1.0 时代(原生 PHP )到 2.0 时代(模型控制器分离,初有框架雏形)到 3.0 (自己写的 MVC 框架)到 3.1 ( Laravel ),过程中学到了很多。对于业务逻辑有一定程度的项目,Laravel 可以显著提升开发速度。我在这个项目前期摸爬滚打搞出来的一些东西,最后发现 Laravel 里全都有 :)

    不过我还是不推荐 PHP 新手直接上手 Laravel,只会一个框架却完全不了解框架的内核,不好。
    printempw
        108
    printempw  
       2017-04-30 18:31:03 +08:00
    Laravel 臃肿的封装、缓慢的运行速度都是广受诟病的(也有 Laravel-Stone 之类的 solution ),不过其多层封装带来的好处,在业务逻辑复杂到一定程度后就会凸显出来。上面有些人吐槽「写个 Hello World 调用栈都有 70 多层」的人就是这样 :P

    业务逻辑很简单的话,就不要用 Laravel 这样的全栈框架了。感受不到 Laravel 带来快捷开发的爽快感,你只会得出「垃圾框架,臃肿性能慢,优雅个 P 」这样的结论 ;)
    lucky215
        109
    lucky215  
       2017-04-30 18:34:48 +08:00
    我感觉好多人都跑题了,laravel 在 PHP 社区里的确是个很好的框架,和 springboot 其实没什么可比性,语言就不一样啊
    sagaxu
        110
    sagaxu  
       2017-04-30 18:39:49 +08:00
    @lianxiaoyi

    laravel 是慢,但也没有慢到连 1000rps 都扛不住,laravel 之父亲自做过 benchmark
    https://medium.com/@taylorotwell/benchmarking-laravel-symfony-zend-2c01c2b270f8

    2G 内存的双核 VPS,20 美金一个月的那种,一个高级 php 开发的每月工资支出,可以买 200 个这种主机了
    Without Sessions:
    Laravel: 609.03 requests per second (mean)
    Zend: 559.91 requests per second (mean)
    Symfony: 532.97 requests per second (mean)

    With Sessions:
    Laravel: 521.64 requests per second (mean)
    Zend: 484.94 requests per second (mean)
    Symfony: 439.37 requests per second (mean)

    1000rps,只要四核就搞定了,4 台八核搞不定,我觉得他们要优化的不是框架,是研发团队自身
    gouchaoer
        111
    gouchaoer  
       2017-04-30 19:16:18 +08:00 via Android
    @msg7086
    你去看看 github 上的 php framework benchmark 那个 repo 吧,不只有 cpu 消耗,laravel 的内存消耗也惊人
    gouchaoer
        112
    gouchaoer  
       2017-04-30 19:20:52 +08:00 via Android
    https://github.com/kenjis/php-framework-benchmark/blob/master/README.md
    这内存消耗,你 php-fpm 能开几个 worker 进程?
    printempw
        113
    printempw  
       2017-04-30 19:28:10 +08:00
    @gouchaoer 引文:「 laravel 我是真的读不懂源码,也没法单步调试一次请求,因为里面都是 closure 和啥 bus,各种跳来跳去,不懂」

    Laravel 中的 Bus 应该是译为「总线」。而且读不懂框架内部实现哪有怪框架的?
    dawniii
        114
    dawniii  
       2017-04-30 19:41:50 +08:00
    @sagaxu 刚进去看了下压测参数 有点感人。。。ab -t 10 -c 10 http://server.address/
    sagaxu
        115
    sagaxu  
       2017-04-30 20:45:42 +08:00
    https://github.com/kenjis/php-framework-benchmark/的测试,本地搭了一个测试了一下


    做了一点小小的 patch,不然用例是错的
    https://gist.github.com/anonymous/5df1541bdbfa7b8cfe5513a361612893


    结果如下,
    |framework |requests per second|relative|peak memory|relative|
    |-------------------|------------------:|-------:|----------:|-------:|
    |ci-3.1 | 5,778.00| 6.8| 0.38| 1.0|
    |slim-3.0 | 4,808.94| 5.7| 0.56| 1.5|
    |laravel-5.3 | 849.19| 1.0| 2.04| 5.4|

    注释掉 laravel 中默认开启的,但是无用的 middleware 之后,结果如下
    |framework |requests per second|relative|peak memory|relative|
    |-------------------|------------------:|-------:|----------:|-------:|
    |ci-3.1 | 6,256.39| 4.3| 0.38| 1.0|
    |slim-3.0 | 4,977.89| 3.4| 0.56| 1.5|
    |laravel-5.3 | 1,453.05| 1.0| 2.02| 5.3|

    把 fpm 的 max_children 从 2 改为 1,结果如下
    |framework |requests per second|relative|peak memory|relative|
    |-------------------|------------------:|-------:|----------:|-------:|
    |ci-3.1 | 3,293.76| 4.1| 0.38| 1.0|
    |slim-3.0 | 2,583.93| 3.2| 0.56| 1.5|
    |laravel-5.3 | 803.36| 1.0| 2.02| 5.3|


    laravel 跟 slim 和 ci-3.1 相比,在 hello world 的比拼下是比较慢,但是也绝对不是 1000rps 都扛不住的地步。
    而且真实的业务,不可能就是输出一个写死的 hello world,业务逻辑自身有 php 代码,还要访问 db 和 cache,这些大部分占执行时间的代码都是一样的,框架执行时间只是小部分,框架占用的内存也只是小部分,把只占用 20%不到的资源,优化提高 100 倍,也只是把开销从 100 减少到 80 而已,这点儿性能提升或者内存减少,毫无价值。


    最后,把性能拿出来说事前,得先把日 PV 做到 3000 万以上,否则那点儿访问量用什么还不都一样。
    gouchaoer
        116
    gouchaoer  
       2017-04-30 20:51:29 +08:00 via Android
    @你的 3kw 的 pv 平均下来就是 1000 的 qps 了(每天算 10000s 的访问时间),前面人也所说了 4 台 vps 扛 1000qps 都想换,你再看看内存,laravel 内存消耗是 ci 的几倍。。。
    gouchaoer
        117
    gouchaoer  
       2017-04-30 20:53:42 +08:00 via Android
    php7 平均下来提高一倍的 qps 都促使各厂升级,你哪里来的自信说 laravel 是 ci 的 1/5 的 qps 但是性能不重要?
    sagaxu
        118
    sagaxu  
       2017-04-30 20:59:36 +08:00
    @sagaxu 以上测试看起来有 3 倍多到 4 倍多的性能差距,RPS 是 1400,4900,6200,叠加上 RPS 不到 100 的业务逻辑代码之后,真实的 RPS 就变成 98, 99, 100,性能差距完全被业务逻辑代码给抹平了。

    内存占用分别 2.02,0.56,0.38,看起来差距很大,如果业务逻辑自己占个 20M 内存,叠加上去,变成 22.02,20.56,20.38,差距还有多大?

    这些 micro benchmark 最大的问题,是忽略了一点,业务逻辑自身消耗的 CPU 和内存才是大头,看似几倍几十倍的差距,一旦叠加上业务逻辑,差距就变得不再明显,因为那是加法,不是乘法。要知道,在局域网内走 TCP,几次 redis 访问就要几个毫秒了,真实场景下,单核的 RPS 是很难做到 1000 以上的,能做到 100 已经算不错的了。
    gouchaoer
        119
    gouchaoer  
       2017-04-30 21:22:51 +08:00 via Android
    业务逻辑本身不是很消耗内存的,大部分内存消耗是框架带来的啊。。。 @sagaxu
    sagaxu
        120
    sagaxu  
       2017-04-30 22:28:59 +08:00
    @gouchaoer 不用任何框架的 fpm 进程也占用 15-20M 内存了,这部分的确不能算在业务逻辑中,但是也不能随便把它从分子和分母中同时减去。而且业务也要看情况的,我们 fpm 进程内存限制到 128M 的时候,有些请求就报错了。有一些基础数据,是作为 php 代码 load 进来的,比如 371 个城市的信息,以及 371 个城市每个城市的配置信息,这些很容易就超过 2M 内存了。
    denghongcai
        121
    denghongcai  
       2017-04-30 22:52:45 +08:00
    @zencoding 哈哈,真理
    denghongcai
        122
    denghongcai  
       2017-04-30 23:00:59 +08:00
    单请求内存峰值 Laravel 毋庸置疑是比其他框架 /原生大的,每次请求 bootstrap 框架的时间也是很高的,可以尝试下 https://github.com/garveen/laravoole 这类项目

    加上业务逻辑的情况下,对 MySQL / Cache 这种外部系统的请求都是同步 I/O 调用,对性能影响还是挺大的,耗在框架上的时间占比很难讲。具体情况具体分析吧

    最后一句:不要抛开场景来谈技术选型
    gouchaoer
        123
    gouchaoer  
       2017-04-30 23:33:54 +08:00 via Android   ❤️ 1
    @sagaxu
    371 个城市数据配置请用 yaconf,php 每个请求都加载一遍很不划算
    jiujianlu
        124
    jiujianlu  
       2017-04-30 23:52:05 +08:00
    真心不喜欢 Laravel,除了官网做得漂亮,实在找不出什么优势。
    小项目我不会选这么重的框架,大一点的项目我会选 Symfony 2/3。

    Laravel 想在工程化和极客范之间寻找平衡,最终给我的却是一种华而不实的感觉,喜欢不起来。
    sagaxu
        125
    sagaxu  
       2017-04-30 23:55:06 +08:00
    @gouchaoer 这类业务我们已经用了 swoole 常驻内存,fpm 里还剩一些暂时没迁移完的业务。性能要求很高的业务,跑 JVM 上了,性能要求高的基础设施,是 Java,C++和 Go 做的,PHP 做起来太累太麻烦。

    swoole+php7 基本上可以榨干 php 的性能了,swoole 的协程用起来也还可以,虽然没有 go 语言方便。
    msg7086
        126
    msg7086  
       2017-05-01 06:59:14 +08:00
    @bianhua 我说的是「通宵改原生」的代价,不是在说性能本身。
    gouchaoer
        127
    gouchaoer  
       2017-05-01 08:38:06 +08:00 via Android
    @sagaxu
    swoole 的 http 压测 qps 应该和单页 php/phalcon/yaf 一样啊,你们换 swoole 后 qps 有提升么?
    bianhua
        128
    bianhua  
       2017-05-01 10:22:27 +08:00
    @msg7086 哦,我错了(捂着脸跑
    ibegyourpardon
        129
    ibegyourpardon  
       2017-05-01 11:15:12 +08:00
    @ovear 我插个嘴跑个题,代码规范和框架约束这两者其实几乎每个人都早晚会遇到这些。

    但我个人职位是偏技术管理方向,就我的经验看来……代码规范总会有执行不好的时候,而通过框架实施某种半强制的约束,其实总体上来看,在大家的交流方面是省心一些的。

    虽然我也觉得其实限制死了有时候挺不爽,但写久了发现还是工具框架的约束比规范来得靠谱……

    当然这个话题和这里说 Laravel 其实没有什么直接关系就是了。
    ibegyourpardon
        130
    ibegyourpardon  
       2017-05-01 11:24:29 +08:00
    同是 Laravel 5.2,一套东西上,我们跑过一秒钟 100 都扛不住的业务,也跑过 2000+无障碍……

    这种锅我觉得纯粹丢给 Laravel 或者 PHP 或者服务器都不对。

    我就是那个同环境下 100 跑不过跑到 2000 + 的人。

    重新思考了业务,一步步拆开,重新组合,总有办法。
    sagaxu
        131
    sagaxu  
       2017-05-01 13:50:06 +08:00
    @gouchaoer 和我直接有关的那个 case,没法跟 fpm 对比,不用 swoole 协程得开 1000 到 3000 个 fpm 进程,吃不消。如果不用 swoole,只能 Java 或者 Go 了。其它迁移到 swoole 的项目,CPU 降低了很多。因为 swoole 是我们厂维护的,所以不大可能考虑其它标榜高性能的 php 框架。
    dawniii
        132
    dawniii  
       2017-05-01 15:45:39 +08:00
    @sagaxu 使用 swoole 替代传统的 php 开发模式吗?感觉牺牲了 php 无状态的优势,不太好。需要效率的地方我感觉换个语言才是王道
    sagaxu
        133
    sagaxu  
       2017-05-01 16:40:10 +08:00
    @dawniii php 的无状态那不是优势是劣势,无状态是架构上的,节点之间对等可替换,但是节点自己,需要记住一些自己的 metadata,内部是需要状态的。
    dawniii
        134
    dawniii  
       2017-05-01 21:25:45 +08:00
    @sagaxu 我说的无状态,可以理解为。撒开膀子就是干。我不用特别关心内存会不会释放,不用担心第三方库是不是因为常驻内存而有什么奇怪的情况发生。因为每次请求就看做是一次生命周期。
    dawniii
        135
    dawniii  
       2017-05-01 21:33:22 +08:00
    @sagaxu 无状态会让很多事情变得简单,这也是 php 开发效率高的原因,对比下 java 和 php 的部署。php 环境搭建好,覆盖文件就是更新了。为什么要把简单的事情复杂化呢。不如换个更擅长的语言。
    sagaxu
        136
    sagaxu  
       2017-05-02 00:16:09 +08:00
    @dawniii

    先说内存的事,Java 和 Go 都有成熟的 GC,除非你开着全局变量并且一直往里塞东西,否则泄露不了内存,每个请求的 handler 是个闭包或者函数,只要不故意定义超过函数生命周期的变量,你不玩 off-heap 黑魔法,完全不会泄露内存。

    部署的话,php 和 python 差不多,比起 Java 和 Go 麻烦太多了,Go 最简单,就一个可执行文件,大部分情况下也不依赖什么运行库。Java 比起 go 稍微麻烦一点,就是需要先安装一个 JRE,然后也是一个 jar 包直接运行(现代 javaweb 一般内置了 tomcat 这类 webserver),复杂一点就是把 war 扔到 tomcat 的 webapps 目录,它会自动重启。

    php 和 python 就麻烦很多了,用 pip/pear 安装扩展的时候经常会遇到 xxx.h 找不到,典型的比如 db 驱动。然后还必须前置一个 nginx 或者 apache,fastcgi 配起来还麻烦,不同框架配置方法不一样,还要提防 cgi 的 fixpath 问题。python 稍微好一些,uwsgi 比较简单,或者直接走 http 协议更简单。Java 和 Go 的最简单,把 static 资源外的直接 proxy_pass 走就行了。
    PHP 光是把环境搭一遍都很麻烦。

    php7.1 开始内置代码的 cache 了,改 php 文件是没用的,改完文件得重启 fpm 进程才能生效,这个应该是性能增强带来的副作用。在需要重启服务以后,php 的新版本手动部署,已经跟 java 或者 go 没有不同了。




    觉得 php 部署简单的,我提个前几年遇到过好几次的场景,看看大家有没有好办法。

    几台服务器,无外网连接,系统有 rhel5 和 rhel6,还有 ubuntu12 和 14,还有 windows 32 位和 64 位都有,用到的数据库是 pgsql 和 db2,如何打包 php 程序过去部署?

    当时我的解法是,Java 给每个平台下载一个 JRE,应用打成 jar 包就好了,db 驱动也是 java 实现的,直接打进 jar 包里了,不依赖运行库。php 真的难倒了我,最后,我给每个平台下载了对应版本的 vmware,然后为 php 制作了虚拟机镜像,把兼容性工作交给了 vmware 去做。还好那些机器都有图形界面和 root 帐号,不然还得折腾无 gui 甚至无 root 的情况下怎么安装 vmware。
    hellowwo
        137
    hellowwo  
    OP
       2017-05-02 09:28:39 +08:00
    @sagaxu 你这种情况用 Docker 会更好
    sagaxu
        138
    sagaxu  
       2017-05-02 09:31:30 +08:00 via Android
    @hellowwo 给无外网网络的 rhel5 和 windows 装 docker,你是在开玩笑吗?
    pein
        139
    pein  
       2017-05-02 10:01:49 +08:00
    laravel 中的一些思想是好的,跟我不知道 laravel 时的一些想法不谋而合,就是个人认为它可能在实现或者封装上过于复杂了点。外国人写框架就是这样,一门心思实现自己的想法,不怎么关注性能什么的,自己爽就行了。
    hellowwo
        140
    hellowwo  
    OP
       2017-05-02 10:22:19 +08:00
    @sagaxu 你不知道离线安装这回事吗?
    sagaxu
        141
    sagaxu  
       2017-05-02 10:30:10 +08:00
    @hellowwo 呵呵,不要说是离线,就是给你没有墙的网,你在 rhel5 和 win2008 上装一个 docker 试试看,内核太老不支持,你有办法?
    lygmqkl
        142
    lygmqkl  
       2017-05-02 10:30:29 +08:00   ❤️ 1
    说句老实话 本来不想回答的,怕惹非议,但是还是忍不住说 2 句

    第一 多一种框架是好的,但是 Laravel 有点特别
    第二 请主要参考国内大公司商用场景,我了解下来 Yii1/2 用的更多一些,至少在国内目前 Yii 不温不火的前提下,这个反查有点显眼。
    第三 主要是给新人看的,老实说懂一些的都有自己的看法,唯独新人会考虑到处看看,哪个口碑好,所以大家谨慎。
    Z1076
        143
    Z1076  
       2017-05-02 12:16:19 +08:00
    在 V2 我就没见过没被喷的 PHP 框架, 前一排是 TP。 现在轮到 laravel ?
    hellowwo
        144
    hellowwo  
    OP
       2017-05-02 12:47:58 +08:00
    @Z1076 用 laravel 的公司多起来了,是个机会。
    e9e499d78f
        145
    e9e499d78f  
       2017-05-02 14:57:00 +08:00
    @sagaxu php7.1 开始内置代码的 cache 了,改 php 文件是没用的,改完文件得重启 fpm 进程才能生效,这个应该是性能增强带来的副作用。在需要重启服务以后,php 的新版本手动部署,已经跟 java 或者 go 没有不同了。
    -----

    非也非也。

    http://php.net/manual/en/intro.opcache.php :
    This extension is bundled with PHP 5.5.0 and later, and is » available in PECL for PHP versions 5.2, 5.3 and 5.4.

    http://php.net/manual/en/opcache.configuration.php#ini.opcache.revalidate-freq :
    opcache.validate_timestamps boolean

    If enabled, OPcache will check for updated scripts every opcache.revalidate_freq seconds. When this directive is disabled, you must reset OPcache manually via opcache_reset(), opcache_invalidate() or by restarting the Web server for changes to the filesystem to take effect.
    opcache.revalidate_freq integer

    How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.

    This configuration directive is ignored if opcache.validate_timestamps is disabled.
    gouchaoer
        146
    gouchaoer  
       2017-05-02 19:45:31 +08:00 via Android
    @sagaxu
    我看韩天峰在 weibo 上说过他是用 phar 给 php 打包然后放 swoole 中部署的,和 java 一样。。。。这里我就很反对这种做法,php 的很大优势就是热更新,打包直接失去了这个优点,因为 swoole 本质上作为一个 php-cli 没法像 php-fpm 那样无状态。。。。

    你的那个场景 php 应用是 php-cli 还是 php-fpm 应用呢?如果是 php-cli,php 在 win 下有绿色版,在 linux 下没有绿色版但是你可以打包一个带有系统依赖的 php-cli,然后释放到对应系统中,比较 dirty。。。如果是 php-fpm 那就无解了
    sagaxu
        147
    sagaxu  
       2017-05-02 23:51:55 +08:00
    @gouchaoer 我反而蛮看好 phar 的,打包可以让分发和安装更简单,热更新跟打包也不矛盾,java 的 war 包一样支持热更新。

    我那个场景是 fpm,即便跑 cli,各种发行版自己编译一遍 db2 驱动也很累人的,要把各个环境都搭一遍再编译出来,这个时候交叉编译也很麻烦的
    aksoft
        148
    aksoft  
       2017-05-16 08:42:57 +08:00
    人家问开发起来舒不舒服~
    我来回答,舒服~~爽
    ttomath
        149
    ttomath  
       2019-05-21 11:16:48 +08:00
    @woshixiaohao1982 哈哈哈,他可能还不知道有注解路由之类的玩意儿,还在想象 struct2 和 spring 早期的玩意儿
    TangMonk
        150
    TangMonk  
       2019-08-18 16:11:02 +08:00 via iPhone
    真正优雅的是 rails,没有一个框架论优雅比得上他
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3341 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:43 · PVG 20:43 · LAX 04:43 · JFK 07:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.