yaf框架单元测试

代码目录结构: 项目目录 application 控制器和视图目录 configs ini配置文件目录 library Dao、Model、Service层目录 public 入口文件目录 tests 单元测试目录 api 测试用例目录 bootstrap.php 单元测试初始化文件 vendor 第三方库(composer) composer.json composer依赖文件 phpunit.xml 单元测试配置文件 在yaf中做单元测试,主要…

PHP实现大数字格式化成K/M/B结尾的简短形式

这个功能在显示文章访问量中会用到,在GitHub的star中也会有,比如: 232简短显示为232 12556简短显示为12.6k(四舍五入) 1232323简短显示为1.2m(四舍五入) 32343533232简短显示为32.3b(四舍五入) PHP实现代码: /** * 转换数字为简短形式 * @param $n int 要转换的数字 * @param $precision int 精度 */ function shortenNumber($…

nginx和php-fpm通信, unix socket还是tcp?

Nginx和Fastcgi( php-fpm是PHP端的Fastcgi实现 )的通信方式有两种,一种是TCP的方式,一种是unix socket方式。 两种方式各有优缺点,这里先给出两种的配置方法,然后再对性能、安全性等做出总结。 TCP是使用TCP端口连接,本地配置: 127.0.0.1:9000 Socket是使用Unix Domain Socket连接套接字,一般以文件形式:/dev/shm/PHP-cgi.sock 很…

PHP Opcache工作原理

PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。 而Opcache又是优化PHP性能不可缺失的组件,尤其是应用了PHP框架的项目中,作用更是明显。 1. 概述 在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。 1.1 PHP-FPM + Nginx 的工作机制 请求…

PHP empty()和is_array()实现源码分析

事情起因于这样一段代码: if(is_array($input) && !empty($input)){ // 做点事 } leader认为应该先empty()判断,再is_array()判断,这种写法也更为多见。 而我还是觉得其实差不多。群里讨论之后,也没有确定性的结论,究竟哪一种更好。 于是乎,我去看了两者的源码实现。 1 is_array()的实现 is_array()是php内置函数,通过扩…

PHP数组遍历的顺序

经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢? 比如: <?php $arr['laruence'] = 'huixinchen'; $arr['yahoo'] = 2007; $arr['baidu'] = 2008; foreach ($arr as $key => $val) { //结果是什么? } 又比如: <?php $arr[2] = 'huixinchen'; $arr[1] = 2007; $arr[0] = 2008; foreach…

PHP内存管理之unset和哈希表

首先让我们看一个问题: 如下代码的输出, var_dump(memory_get_usage()); $a = "laruence"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage()); 输出(在我的个人电脑上, 可能会因为系统,PHP版本,载入的扩展不同而不同): int(90440) int(90640) int(90472) 注意到 90472-90440=32, 于是就有了各种的结论, 有的人说P…

如何记忆PHP的ceil、floor、round函数

ceil()、floor()和round()是PHP中的3个取整函数, 这3个函数用法都一样,但是结果不同, 在经常运算的场景下,记住他们的区别就很受用。 ceil:进一法取整 英文意思装天花板,注意跟cell(细胞)不是同一个词 floor:舍去法取整 英文意思是地板、装地板 round:四舍五入法取整 英文意思是圆、大约 这些函数我们跟英语意思结合起来,就很轻松了。

PHP strpos中文查找问题

在用PHP strpos函数查找字符串包含关系时,一直返回false。 如下2个字符串: $a = '歪麦博客'; $b = '博客'; 字符串$a是从网页获取的内容,字符串$b是从数据库读取的内容。 用PHP的字符查找函数strpos、stripos、mb_strpos、mb_stripos都没能正确返回。 按理说: $pos = strpos($a, $b); $pos = mb_strpos($a, $b); 都应该返回数字4,(…

10分钟从PHP到Python

PHP和Python都是解释性语言,用过PHP一般再学Python就比较容易,毕竟很多概念都一样。 当然,反过来也一样,会Python再入手PHP,也很简答。 不过如果要使用框架,那就得稍微多用些力气。 这里我们以语言本身为主,就暂不讨论框架。 1 用途 我是先用PHP,再学Python,所以对他们的用途也算清楚。 PHP以WEB服务起家,而且多年来都是以这个…