PHP反射API初探

1. 什么是反射

反射在百度百科里面的解释是“反射是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对象”。

PHP提供了对类、函数、方法以及拓展进行反射的能力。通过反射我们可以在动态运行程序时候,获取类的名字,参数,方法、注释等信息以及动态调用对象方法,通过这些可以实现自动生成文档、自动注入依赖,插件管理。

反射的优点:

  1. 反射提高了程序的灵活性和扩展性。
  2. 降低耦合性,提高自适应能力。
  3. 它允许程序创建和控制任何类的对象,无需提前硬编码目标类。

Read More

6个重构方法可帮你提升80%的代码质量

原文地址:Top 6 Refactoring Patterns to Help You Score 80% in Code Quality

在过去做了不少代码审核,发现了一些代码质量上普遍存在的问题,以下是其中的前五名:

1. 臃肿的类

类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解。这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面。

解决方法:提取类/抽离方法
正如上面提到的,像“臃肿的类”(一个类提供了本该有几个类提供的功能)这种代码异味应该将原有类中的方法和属性移动到适当数目的新类中去。旧类中对应新类的方法和属性应该被移除。

另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类的成员方法的成员方法。这些方法也应该被迁移到合适的类中。

Read More

使用Xdebug和Webgrind优化PHP代码

在PHP开发过程中找到并修复性能瓶颈(performance bottlenecks)往往是非常困难和耗时的。为了定位问题,我们可能会在疑似影响性能的代码的开始和结束之间打上标记点,计算时间差,来定位问题,CI框架提供的基准测试类就是这样工作,这种方式对小型项目起到方便快捷的作用,但对大项目往往吃力不讨好,好比在工业时代,却是用石器时代的工具。这时候我们可以借助Xdebug,webgrind这样的工具来定位到和可视化php代码中的性能瓶颈。

Xdebug是PHP拓展,可以用来跟踪,调试和分析PHP程序的运行状况。而Webgrind是Web应用,提供一个可视化工具,来分析、查看Xdebug性能日志功能。在Linux KDE环境下可以用KChaceGrind,windows 下可以用winChaceGrind来替换Webgrind查看分析Xdebug日志。

Read More

Improve the performance of your webapp: configure Nginx to cache

Nginx

原文链接:https://www.theodo.fr/blog/2016/06/improve-the-performance-of-your-webapp-configure-nginx-to-cache/
Sometimes, improving the user’s loading experience is not enough, and you need real changes to make your application load faster.
So you try CSS and JS minification or image compression but your app is only a bit faster to load. These tricks reduce the size of resources that need to be downloaded, but what if your users didn’t have to download anything at all? That’s what caching is for!

In this article, I will explain how you can configure Nginx to enable the browser cache, thus avoiding painfully slow downloads. If you are not familiar with Nginx, I recommend reading this article.

Read More

网站性能指标

QPS

每秒查询率(Query Per Second),每秒响应请求数

QPS = 完成Request量/所花时间(单位 Request/s)

吞吐量(Throughput)

吞吐量是指系统在单位时间内响应的数据量

一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降

Read More

How-To-Clear-PHP’s-Opcache

原文链接:https://ma.ttias.be/how-to-clear-php-opcache/

PHP can be configured to store precompiled bytecode in shared memory, called Opcache. It prevents the loading and parsing of PHP scripts on every request. This guide will tell you how to flush that bytecode Opcache, should you need it.

You may want to flush the APC (PHP < 5.5) or Opcache (PHP >= 5.5) in PHP when it has cached code you want to refresh. As of PHP 5.5, the APC cache has been replaced by Opcache and APC only exists as a user key/value cache, no longer a bytecode cache.

Read More