这个过程有点意思,网络上基本都是5.3以前版本的解决方案,5.3及以后的版本都不好使了,在此记录下~
备注:需要结合illuminate/database组件一起使用
1.安装组件
composer require illuminate/database
composer require illuminate/pagination
2.Laravel的Eloquent的paginate或simplePaginate方法会返回pagination实例对象,因此直接拿来用就可以了。
...
本文根据10 Most Common PHP Mistakes整理而来,非逐字翻译,在保证原文内容不变的同时,加入了些自己的理解。
错误1:foreach循环后留下悬挂指针
在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法:
...英文原文:Horizontal Scaling of PHP Apps
结合原文和自己的理解,简单总结下,便于理解和日后查阅。
一个web网站,面对流量增长和其他性能瓶颈的挑战,我们应该如何去处理呢?两个方面-优化和扩展。
优化如升级php版本至最新版本、做好数据库索引、静态内容缓存等,比如一种常用的思路是利用Nginx做反向代理,具体可参考此处。扩展包括水平扩展和垂直扩展,垂直扩展简单说就是硬件的升级,以此获取更好的性能。水平扩展是用更多的服务器来做负载均衡,以此为网站提升更好的性能。负载均衡大的方面有两种实现,软件和硬件。软件可以用Nginx和Squid来实现,硬件可参考此列表。
...
{
"name":"jd/guzzle demo",
"authors":[
{
"name":"Eddy",
"email":"eddy@rrgod.com"
}
],
"require":{
"guzzle/guzzle":"~3.7"
}
}
保存文件,运行composer install命令,Guzzle库安装完成,OK~所谓ajax长轮询,简单说就是客户端发起ajax请求,服务端会挂起该请求(通过循环),直到条件触发使服务器返回,在服务器返回前客户端一直处于pending,等待服务器返回。
ajax长轮询可以减少客户端的无用请求,不过服务端的压力会大一些。另外可以采用websocket实现推送,不过兼容性会差些,有些浏览器不支持websocket。
下面的代码可实现Comet:
服务端代码:
[CODE=php]很好的一篇讲解PHP数组的博文,详细讲解了php中数组与其他语言的差别,内核如何实现数组,数组的遍历,另外还分析了网上广为谬传的foreach比for性能好的说法。
我自己也测试了下foreach和for的性能,在php 5.3 和5.4版本下,不管遍历时是否改写数组,还是foreach时用引用方式,结果都未显示foreach优于for,我自己测试的结果是for比foreach还稍微快那么点儿:)如果foreach不采用引用方式,那for比foreach就快许多~
...
我们都知道,类的私有属性在类外部是不可访问的,包括子类中也是不可访问的。比如如下代码:
class Example1{
private $_prop = 'test';
}
$r = function(Example1 $e){
return $e->_prop;
};
$a = new Example1();
var_dump($r($a));
//运行结果:Fatal error: Cannot access private property Example1::$_prop
...
看了下Slim这个小框架,它是这么做的:
$app = new \Slim\Slim();
程序初始化时,会构造一个全局的Slim对象实例,在Slim类构造函数中首先获取Set对象实例,接着实例化相关类并保存在Slim类的Container属性中。地址:http://net.tutsplus.com/sessions/test-driven-php/
此系列文章介绍了测试驱动开发的一些基本概念、自动化测试以及如何在PHP中去进行实践。详细介绍了PHPUnit的用法,以及结合Selenium进行user acceptances tests。另外还介绍了Mockery,并与PHPUnit’s mocking framework进行了横向比较。
...我个人觉得对于如何去用递归的思想解决问题,关键在于从最根本点思考一个问题,先不用管小的实现过程。
比如经典的汉诺塔问题,其实很简单,先不用去想一个个盘子怎么去移动,只要知道:
初始状态:A上有n个盘子,B为空,C为空。
第一步,把A上的n-1个盘子移动到B;第二步,把A上的第n个盘子移动到C;第三步,把B上的n-1个盘子移动到C。搞定!
假设实现每次移动操作的函数为move($a,$b,$c,$n),则php实现代码如下:
...
COLOR && $rgb['blue']>COLOR && $rgb['green']>COLOR) {
//echo '1';
$sourceData[$i][$j]=0;
}else{
//e
翻译了比较久,年前总算是把这个小任务完成了。文章是用markdown语法来写的,在github上阅读效果更佳:
去GitHub上阅读Yii 1.1 Application Development Cookbook中文翻译(第二章)
本章将帮助你学习Yii框架中关于URL路由、控制器和视图的一些有用的知识。学习完本章内容你可以更加灵活的运用控制器和视图。
...
<?php
header('content-type:text/html;charset=utf-8');
$Mer_code = '000166';
$Mer_key = 'cQ0YAtyVNoiEeKrZJ5F5Qp2pMohwspfv6XoiU3wHYtcc1YOEhJ3SjDVMylmwmbD7jMhg5ifqjX67mzNN02p8MmlSb1KIqa5XF4TEQHjZEmJmhyAYxyVJMeLWBofdxwaj';
...