Modern PHP简略笔记

2018-06-11  本文已影响18人  10xjzheng

0 前言

Modern PHP(中文版)豆瓣评分挺高的,所以找来看看,做个简略笔记,有些我已经熟悉的就不做记录了。

1 语言特性

1 新时代的PHP

2 特性

<?php
function makeRange($length)
{
    $dataSet = [];
    for ($i = 0; $i < $length; $i++)
    {
        $dataSet[] = $i;
    }
    return $dataSet;
}
$customRange = makeRange(100000);
foreach ($customRange as $i) {
    echo $i, PHP_EOL;
}

结果:memory usage:6291568 (bytes)


$begin = memory_get_usage();
function makeRange($length)
{
    for ($i = 0; $i < $length; $i++)
    {
        yield $i;
    }
}
$customRange = makeRange(100000);
foreach ($customRange as $i) {
    echo $i, PHP_EOL;
}
echo 'memory usage:' , memory_get_usage() - $begin, PHP_EOL;

结果:memory usage:416(bytes)

这内存省的太多了。

2 良好实践

3 标准

PSR-1: 基本的代码风格
PSR-2:严格的代码风格
PSR-3:日志记录器接口
PSR-4:自动加载

4 组件

用Composer安装组件,基本大家都会啦。
可以学习一下怎么写组件,到Packagist注册,提交代码。
Packagist

5 良好实践

htmlentities() //对输入的html转义,用的时候要指定参数
htmlentities($html, ENT_QUOTES, 'utf-8') //第二个参数指定对单引号和双引号转义,第三个 参数指定编码

filter_var()//指定过滤字符

bcrypt 最安全的哈西算法,哈希加盐,防止彩虹表攻击。

PDO 预处理语句,绑定参数
<?php
$requestBody = '{"userName": "json"}';
$context = stream_context_create([
   'http' => [
       'method' => 'POST',
       'header' => "Content-Type: application/json;charset=utf-8;\r\n" .
                    "Content_Length" . mb_strlen($requestBody),
       'content' => $requestBody
   ]
]);
$response = file_get_contents('https://my-api.com/users', false,  $context);

部署、测试和调优

6 主机

主机方案,主要讲根据项目大小选用服务器的,略过

7 配置

8 调优

opcache.memory_consumption = 64 //为操作码缓存分配的内存量(M)
opcache.interned_strings_buffer = 16 //用来储存interned string的内存量
opcache.max_accelerated_files = 4000//操作码缓存中最多能存储多少个PHP脚本
opcache.validate_timestamps = 1//这个设置的值为1时,经过一段时间后PHP会检查PHP脚本的内容是否有变化,0不检查。
opcache.revalidate_freq = 0 //设置多久检查一次PHP脚本的内容是否有变化,单位是秒
opcache.fast_shutdown = 1//这么设置能让操作码使用更快的停机步骤,把对象析构和内存释放交给你Zend Engine的内存管理器完成
file_uploads = 1
upload_max_filesize = 10M
max_file_uploads = 3
max_execution_time = 5
session.save_handler = 'redis'
session.save_path = '127.0.0.1:6379'
output_buffering = 4096
implicit_flush = false

9 部署

10 测试

11 分析

12 HHVM和Hack

上一篇下一篇

猜你喜欢

热点阅读