总结
以上是小编为你收集整理的ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

laravel5.2、thinkphp5、thinkphp3.2.3性能AB测试
测试使用同一台机器、同一个数据库,同一个表,发现laravel语法和tp5语法相似度极高,而且性能也差不多,从数据上看tp5性能比laravel高一点点,但还没tp3高
请求5000次,并发200 laravel
Requests per second: 1655.54 [#/sec] (mean)每秒请求数(平均)越大越好
Time per request: 120.807 [ms] (mean)每次并发请求时间越小越好
Time per request: 0.604 [ms] (mean, across all concurrent requests)每次并发请求时间越小越好
thinkphp5
Requests per second: 1697.69 [#/sec] (mean)每秒请求数(平均) 越大越好
Time per request: 117.807 [ms] (mean)每次并发请求时间 越小越好
Time per request: 0.589 [ms] (mean, across all concurrent requests))每次并发请求时间 越小越好
laravel代码
模型
class DocumentArticle extends Model
{
protected $table = ''document_article'';
//
}
控制器
class IndexController extends Controller
{
public function index(){
$list = DocumentArticle::all();
return view(''index'', [''list'' => $list]);
}
}
视图
@foreach ($list as $user)
{{ $user->id }}:{!! $user->content !!}
@endforeach
测试结果
Server Software: Apache/2.4.17
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /laravel/public
Document Length: 340 bytes
Concurrency Level: 200
Time taken for tests: 0.604 seconds
Complete requests: 1000
Failed requests: 0
Non-2xx responses: 1000
Total transferred: 597000 bytes
HTML transferred: 340000 bytes
Requests per second: 1655.54 [#/sec] (mean)
Time per request: 120.807 [ms] (mean)
Time per request: 0.604 [ms] (mean, across all concurrent requests)
Transfer rate: 965.19 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 1
Processing: 33 107 17.7 113 131
Waiting: 33 107 17.6 113 131
Total: 34 108 17.7 114 131
Percentage of the requests served within a certain time (ms)
50% 114
66% 115
75% 115
80% 116
90% 118
95% 121
98% 124
99% 127
100% 131 (longest request)
thinkphp5代码
模型
class DocumentArticle extends Model
{
}
控制器
class Index extends Controller
{
public function index()
{
$list = DocumentArticle::all();
$this->assign(''list'',$list);
return $this->fetch(''index'');
}
}
视图
{volist name="list" id="vo"}
{$vo.id}:{$vo.content}<br/>
{/volist}
测试结果
Server Software: Apache/2.4.17
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /tp5/public
Document Length: 336 bytes
Concurrency Level: 200
Time taken for tests: 0.589 seconds
Complete requests: 1000
Failed requests: 0
Non-2xx responses: 1000
Total transferred: 589000 bytes
HTML transferred: 336000 bytes
Requests per second: 1697.69 [#/sec] (mean)
Time per request: 117.807 [ms] (mean)
Time per request: 0.589 [ms] (mean, across all concurrent requests)
Transfer rate: 976.51 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 1
Processing: 33 106 17.5 110 132
Waiting: 33 106 17.5 110 132
Total: 34 106 17.5 110 133
Percentage of the requests served within a certain time (ms)
50% 110
66% 115
75% 117
80% 118
90% 120
95% 121
98% 124
99% 127
100% 133 (longest request)
thinkphp3.2.3表现不错
Server Software: Apache/2.4.17
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /onetk
Document Length: 331 bytes
Concurrency Level: 200
Time taken for tests: 0.528 seconds
Complete requests: 1000
Failed requests: 0
Non-2xx responses: 1000
Total transferred: 579000 bytes
HTML transferred: 331000 bytes
Requests per second: 1893.83 [#/sec] (mean)
Time per request: 105.606 [ms] (mean)
Time per request: 0.528 [ms] (mean, across all concurrent requests)
Transfer rate: 1070.83 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 2
Processing: 27 95 15.5 99 121
Waiting: 27 94 15.5 98 121
Total: 28 95 15.5 99 121
Percentage of the requests served within a certain time (ms)
50% 99
66% 100
75% 100
80% 101
90% 108
95% 112
98% 117
99% 119
100% 121 (longest request)

Laravel、Yii、ThinkPHP性能测试
#主流PHP框架性能非权威测试
作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。
用ThinkPHP
的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情。不过很多第三方功能不需要自己写,众多大牛已经给铺好路了。
用Laravel
的话,传说写起来很爽扩展性也够,但是学习成本有点高,总不能给初级开发者半个月的时间去学习框架吧。而且据说江湖人士透漏,Laravel
性能不怎么样,文档也并不是特别丰富。
用Yii
的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过性能是非常好的,而且已经有众多国内大公司在使用了,出现意外可以快速的找到大牛答疑解惑。
不如做个简单的性能评测,选个性能出色的总不会出错
#性能测试 测试时间: 2016年05月06日
测试工具: siege
(因为MAC系统的ab
总是会出现 pr_socket_recv: Connection reset by peer (54)
的错误,所以选择了siege
)
测试机器: MacPro Core i5 处理器/8GB内存/256GB SSD闪存
测试环境: Apache PHP5.6
框架版本: ThinkPHP 3.2.3
Laravel 5.2
Yii2.0.5
测试原则: 每次测试循环5次,取中等数据
补充说明: 所有项目都是让在子目录中
#结果说明 Transactions: 2119 hits 处理请求总数量 Availability: 96.85 % 可用性 Elapsed time: 9.74 secs 运行时间 Data transferred: 1.31 MB 数据传输量 Response time: 0.60 secs 响应时间 Transaction rate: 217.56 trans/sec 每秒处理效率 Throughput: 0.13 MB/sec 每秒处理数据 Concurrency: 130.28 并发 Successful transactions: 2162 成功的请求 Failed transactions: 69 失败的请求 Longest transaction: 2.85 最长的单个请求 Shortest transaction: 0.01 最短的单个请求 #开始测试
##增加一个控制器,并在控制器中输入10000次HelloWorld
并发50循环10次
首先向我们走来的是ThinkPHP,看上去还行
Transactions: 500 hits
Availability: 100.00 %
Elapsed time: 2.81 secs
Data transferred: 52.45 MB
Response time: 0.26 secs
Transaction rate: 177.94 trans/sec
Throughput: 18.67 MB/sec
Concurrency: 47.10
Successful transactions: 500
Failed transactions: 0
Longest transaction: 0.48
Shortest transaction: 0.03
然后是Laravle,嗯,略微有些失望
Transactions: 500 hits
Availability: 100.00 %
Elapsed time: 13.33 secs
Data transferred: 52.45 MB
Response time: 1.27 secs
Transaction rate: 37.51 trans/sec
Throughput: 3.93 MB/sec
Concurrency: 47.55
Successful transactions: 500
Failed transactions: 0
Longest transaction: 3.64
Shortest transaction: 0.07
最后赛前比较看好的Yii
Transactions: 500 hits
Availability: 100.00 %
Elapsed time: 4.84 secs
Data transferred: 52.45 MB
Response time: 0.46 secs
Transaction rate: 103.31 trans/sec
Throughput: 10.84 MB/sec
Concurrency: 47.65
Successful transactions: 500
Failed transactions: 0
Longest transaction: 0.88
Shortest transaction: 0.04
并发200循环10次
首先是ThinkPHP
Transactions: 1977 hits
Availability: 98.85 %
Elapsed time: 10.03 secs
Data transferred: 207.40 MB
Response time: 0.95 secs
Transaction rate: 197.11 trans/sec
Throughput: 20.68 MB/sec
Concurrency: 187.68
Successful transactions: 1977
Failed transactions: 23
Longest transaction: 1.22
Shortest transaction: 0.02
然后是Laravel
Transactions: 1890 hits
Availability: 94.50 %
Elapsed time: 51.85 secs
Data transferred: 198.27 MB
Response time: 4.88 secs
Transaction rate: 36.45 trans/sec
Throughput: 3.82 MB/sec
Concurrency: 178.00
Successful transactions: 1890
Failed transactions: 110
Longest transaction: 26.01
Shortest transaction: 0.07
最后是Yii
Transactions: 1996 hits
Availability: 99.80 %
Elapsed time: 18.95 secs
Data transferred: 209.39 MB
Response time: 1.79 secs
Transaction rate: 105.33 trans/sec
Throughput: 11.05 MB/sec
Concurrency: 188.57
Successful transactions: 1996
Failed transactions: 4
Longest transaction: 3.29
Shortest transaction: 0.10
没想到在没有优化的情况下,ThinkPHP的速度是最快的,Yii略微多一些,Laravel步履蹒跚的跑完了测试。结果是有些出人意料的,不过上述的测试只代表了开发环境,下面会对框架进行优化,模拟线上环境。
##优化框架 ThinkPHP:
APP_DEBUG改为false
Laravel:
APP_DEBUG改为false
php artisan route:cache
php artisan optimize
php artisan config:cache
composer dumpautoload -o
Yii:
YII_DEBUG改为false
composer dumpautoload -o
并发200循环10次
ThinkPHP
Transactions: 1655 hits
Availability: 82.75 %
Elapsed time: 8.21 secs
Data transferred: 173.62 MB
Response time: 0.69 secs
Transaction rate: 201.58 trans/sec
Throughput: 21.15 MB/sec
Concurrency: 139.29
Successful transactions: 1655
Failed transactions: 345
Longest transaction: 7.83
Shortest transaction: 0.00
Laravel:
Transactions: 1520 hits
Availability: 76.00 %
Elapsed time: 34.95 secs
Data transferred: 159.45 MB
Response time: 3.15 secs
Transaction rate: 43.49 trans/sec
Throughput: 4.56 MB/sec
Concurrency: 136.84
Successful transactions: 1520
Failed transactions: 480
Longest transaction: 19.18
Shortest transaction: 0.00
Yii:
Transactions: 1704 hits
Availability: 85.20 %
Elapsed time: 15.16 secs
Data transferred: 178.76 MB
Response time: 1.46 secs
Transaction rate: 112.40 trans/sec
Throughput: 11.79 MB/sec
Concurrency: 164.21
Successful transactions: 1704
Failed transactions: 296
Longest transaction: 9.04
Shortest transaction: 0.00
###比较奇怪的一点,当框架关掉调试模式后都出现了较多失败的情况。不过明显的看到,Laravel进行简单的优化后,性能大大的提升了,但还是低于其他两个框架。
#结论
在测试的过程中,其他我的心情是沮丧的,感觉自己的三观世界已经崩塌了,崩塌至渣。
ThinkPHP的性能比Yii高出一倍,比Laravel高出近四倍 Yii的性能比较中庸,但是在测试中会明显发现请求失败的情况比其他两个框架要少 Laravel依旧优雅,不过性能堪忧,用网友的话形容比较好 学之者生用之者死
#最后
我的项目最后使用了自建框架进行开发,得益于composer的强大,开发的过程非常顺利,最后附上自有框架在200并发10次循环的数据,框架开源但是更新比较忙,欢迎在github上搜索PPPHP,和我一起搭建框架。
Transactions: 1672 hits
Availability: 83.60 %
Elapsed time: 6.18 secs
Data transferred: 175.40 MB
Response time: 0.57 secs
Transaction rate: 270.55 trans/sec
Throughput: 28.38 MB/sec
Concurrency: 153.16
Successful transactions: 1672
Failed transactions: 328
Longest transaction: 4.57
Shortest transaction: 0.01

Laravel框架与ThinkPHP框架的不同
作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正...
1.渲染模版方式的不同:在Laravel框架里,使用return view()来渲染模版;而ThinkPHP里则使用了$this->display()的方式渲染模版;
2.在实际开发中我们常常遇到这样的问题,就是开发地点不固定,这就造成了我们需要频繁的更改数据库配置,给开发工作造成了麻烦,TP依然没有避免这个"灾难";在laravel框架中,.env环境文件的出现解决了这个麻烦,我们只需要在不同的工作地点配置好.env文件就不避再进行配置,因为无论是git还是svn " .env是不会随着文件一起提交到服务器的";
3.Laravel框架提供了大量的闭包,作为菜鸟的我目前只使用了use方法,即如何在函数内部使用外层变量
![]()
4.post传值中注意点不同:在Laravel框架里,由于其考虑到了跨站攻击, 所以如果使用form表单以post方式进行传值时,如果不再form表单中加入{{csrf_field()}}则会报出TokenMethodnotfound的语法错误;而TP框架则需要自己手动完成防止跨站攻击的代码;
![]()
5.条件判断语句书写方式的差异:Laravel框架里 if else判断语句和foreach语句 书写时必须以@if开头 以@endif结尾,如果没有则报语法错误,@foreach @endforeach同理;而TP框架则和PHP语法规则使用方式一致直接ifesle语句判断和foreach循环遍历
![]()
6.Laravel里内置了大量的方法供开发者使用,在实际应用中更接近于"让对象完成一切"的开发思想,比如在后台表单验证的时候,Laravel内置了大量的验证方法,例如对用户名的验证:我们使用可以validate方法里''username''=>''required''(不能为空)|alpha_dash(必须数字字母下划线)|between:6,18(在多少位数之间);还内置了例如email;same:字段名;diff:字段名等大量的方法极大的提高了开发速度;
![]()
代码有待完善 只是实验用
7.加密方式
在TP框架中 我们对用户名密码进行加密时使用md5();的方式进行加密,但md5的缺点在于其可以逆向破解,而且在同等规则下同样的密码md5加密出的字符串是有可能出现相同的,这就降低其安全性;但在Laravel框架中内置了"哈希"Hash加密单向加密方法,且同样的参数加密出的字符串是绝对不会出现相同的情况 这就提高了安全性
在经过了一段时间的开发后,我对Laravel框架的认识又在逐步的加深,对于这个世界占有量NO.1的框架... 我想说,我已经在逐步的感受到他的恐怖之处...
8.建表--Laravel在数据库建表上有自己独立内置的结构,可以完全不用借助原生SQL语句或者SQLyogEnt、Navicat 这样的建表工具,进行数据库的建立,增删改查,和数据交互;我想这可能是它牢牢占据NO.1的一大靓点;在ThinkPHP中则需要我们借助SQL语句或者建表工具去逐步完善数据
8.1.首先我们需要建立模型:我用的是gitbash,gitbash是Windows下的命令工具,基于msys GNU环境,有git分布式版本控制工具,主要应用于git.但是在Laravel里也可以直接使用 php artisan make:model Models/GoodsModel -m 完成模型的创建和建表结构的创建(/database/migrations)

8.2.向goods数据表填充数据,要注意数据的类型是严格区分的,并且一定要加..编程之友:注释君;添加完后使用php artisan migrate命令完成表的创建;可以自行YY下 多表同时创建的那种"还有谁"的感觉;
Schema::create(''goods'', function (Blueprint $table) {
$table->increments(''id'')->comment(''商品主键'');
$table->string(''title'')->comment(''商品的标题'');

8.3.假设某个字段不符合要求或者需要添加字段怎么办,无须担心,从github中pull下项目后在数据表里直接修改 只需要用php artisan migrate:refresh
,然后今天的工作结束后push到github库里,其他小伙伴在更新后就可以直接使用新的数据表结构,而且还可以看到更改记录...这是开发者的一大福音~~
9.ORM---在介绍建表时已经使用了创建模型的命令,php artisan make:model XXX;Laravel里模型是对面向对象开发思想最好的诠释,让对象帮我们完成需求;
摘自5.1手册:(Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库进行交互。每个数据库表都有一个对应的「模型」可用来跟数据表进行交互。你可以通过模型查找数据表内的数据,以及将记录添加到数据表中。)
本人在实际使用中也实实在在的感受到了通过创造模型对数据表操作带来的便利,譬如批量赋值,跨表查询,删除模型和软删除,模型关联,当然这些在TP框架中也可以利用模型实现,这一点属于仁者见仁智者见智;根据个人喜好而定
10:session的用法
10.1.ThinkPHP对Session操作进行了封装,并且无需引入就可以使用,Session的启动会在应用初始化的时候自动执行,所以无需手动使用Session::start() 来启动Session。
使用Session类操作和普通方式调用$_SESSION来操作并没有本质不同,只是Session类很多参数可以根据项目配置来灵活设置,最常用的操作方法示例: // 检测Session变量是否存在:Session::is_set(''name''); // 给Session变量赋值:Session::set(''name'',''value'');// 获取Session变量:Session::get(''name'');
10.2.Laravel中Session的常用方法有
$request->session()->get(''key'');//获取session里的某个键名
$request->session()->set(''key'',''default'');//设定一个默认值,当指定键名不存在便返回默认值
$request->session()->all()返回所有数据
session(''k''=>$v)写入session保存数据;
以及闪存数据session()->flash();和保留特定数据->keep(['''','''']);
也可以自定义session驱动
转自:麦先生 博客地址:http://www.cnblogs.com/maixiansheng

laravel框架与thinkPHP框架的区别
laravel框架与thinkPHP框架的区别
主要区别:
1.渲染模版方式的不同:
在Laravel框架里,使用return view()来渲染模版;
而ThinkPHP里则使用了$this->display()的方式渲染模版;
2.在Laravel框架里,由于其考虑到了跨站请求伪造, 所以如果使用form表单以post方式进行传值时,如果不再form表单中加{{csrf_field()}}则会报出TokenMethodnotfound的语法错误;
而TP框架则需要自己手动完成防止跨站攻击的代码;
3.Laravel是一个重路由的框架(5.4),所有的功能都是由路由发起的,哪怕没有控制器方法,只要写了路由就能够访问,thinkPHP(3.2),必须要有控制器方法才能正常访问;
4.laravel具有强大的社区化扩展,(composer扩展自动加载);
5.laravel具有强大的Blade模版引擎;
6.中间件,Laravel特点,可以实现访问前后的处理,例如请求和返回,权限认证等;
7.条件判断语句书写方式的差异:
Laravel框架里 if else判断语句和foreach语句 书写时必须以@if开头 以@endif结尾,如果没有则报语法错误,@foreach@endforeach同理;而TP框架则和PHP语法规则使用方式一致直接ifesle语句判断和foreach循环遍历
8.Laravel里内置了大量的方法供开发者使用,在实际应用中更接近于让对象完成一切的开发思想,比如在后台表单验证的时候,Laravel内置了大量的验证方法,例如对用户名的验证:我们使用可以validate方法里'username'=>'required'(不能为空)|alpha_dash(必须数字字母下划线)|between:6,18(在多少位数之间);还内置了例如email;same:字段名;diff:字段名等大量的方法极大的提高了开发速度;
9.加密方式 在TP框架中 我们对用户名密码进行加密时使用md5();的方式进行加密,但md5的缺点在于其可以逆向破解,而且在同等规则下同样的密码md5加密出的字符串是有可能出现相同的,这就降低其安全性;但在Laravel框架中内置了哈希Hash加密单向加密方法,且同样的参数加密出的字符串是绝对不会出现相同的情况 这就提高了安全性;
10.在实际开发中我们常常遇到这样的问题,就是开发地点不固定,这就造成了我们需要频繁的更改数据库配置,给开发工作造成了麻烦,TP依然没有避免这个灾难;在laravel框架中,.env环境文件的出现解决了这个麻烦,我们只需要在不同的工作地点配置好.env文件就不必再进行配置,因为无论是git还是svn .env是不会随着文件一起提交到服务器的;
相关推荐:《TP5》《laravel》
我们今天的关于ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼和thinkphp路由规则的分享就到这里,谢谢您的阅读,如果想了解更多关于laravel5.2、thinkphp5、thinkphp3.2.3性能AB测试、Laravel、Yii、ThinkPHP性能测试、Laravel框架与ThinkPHP框架的不同、laravel框架与thinkPHP框架的区别的相关信息,可以在本站进行搜索。