###### 记一些坑

```
//phpfpm配置

pm.max_children = 最大并发数

详细的答案:
pm.max_children 表示 php-fpm 能启动的子进程的最大数量。
因为 php-fpm 是多进程单线程同步模式,即一个子进程同时最多处理一个请求,所以子进程数等于最大并发数。
但是实际使用中一般不用考虑,因为php默认配置为动态均衡的子进程管理,不用手动设置这些配置。
```

```
//日志调试方法

/**
 * 超级调试
 *
 * 调试非本地环境或分布式环境,通过Log查看变量传递
 * 写入变量值到\var\log\php_super_debug.log
 * @param  mixed  $data     日志数据
 * @param  string $log_path 日志路径
 * @param  string $log_name 日志名称
 * @return void       
 */
function super_debug($data, $log_path='\var\log\', $log_name='debug')
{
  error_log(json_encode($data, JSON_UNESCAPED_UNICODE)."\n", 3, $log_path.$log_name);
}
```

```
// php实现下载图片

header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename=download_name.jpg');
readfile($yourFilePath);
```

```
// php5.6开始干掉了@语法,php上传图片兼容版本写法

if (class_exists('\CURLFile')) {
    curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
    $data = array('file' => new \CURLFile(realpath($destination)));//5.5+
} else {
    if (defined('CURLOPT_SAFE_UPLOAD')) {
        curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
    }
    $data = array('file' => '@' . realpath($destination));//<=5.5
}
```

```
// 序列化与反序列化

概念:
序列化:把变量(所有类型)转成能传输和储存的变量(不丢失原变量的属性和结构)
反序列化:把字符串转成原变量

函数:
序列化:serialize, json_encode(不能序列化对象)
反序列化:unserialize, json_decode
```

```
// 组合和聚合的区别
组合:A类在实例化对象的过程中产生了对B类的引用
聚合:A类在实例化对象的过程中,不会立即实例化B类,而是等待外界非A类的对象传递

```

```
// 记一个坑

ip2long函数
- 32位系统下会转成带符号的int,范围-2^31~2^31-1
- 64位系统下会转成不带符号的int,范围0~2^32-1
```

```
// static和self的区别

第一种解释:
- static: 代表当前所引用的类
- self: 代表当前代码片断所在的类

第二种解释:
如果子类和父类都有一个“A”方法。那么
- static: 会调用到子类的A方法
- self: 会调用到当前类的A方法,如果在子类中self::A(),将会调用到子类的A方法,如果在父类中,将会调用父类的A方法。

```

```
//json_encode 使用时的一个坑

json_encode有中文时,需要加入JSON_UNESCAPED_UNICODE,json_encode($data, JSON_UNESCAPED_UNICODE); (PHP版本要求:必须PHP5.4+),否则中文会转义为Unicode编码。

例如:
$arr = array('a'=>'只有所有者有读和写的权' ,'b'=>'所有者有读和写的权限,组用户只有读的权限');
echo json_encode($arr);

1. 不加JSON_UNESCAPED_UNICODE时,结果为:
{"a":"\u53ea\u6709\u6240\u6709\u8005\u6709\u8bfb\u548c\u5199\u7684\u6743","b":"\u6240\u6709\u8005\u6709\u8bfb\u548c\u5199\u7684\u6743\u9650\uff0c\u7ec4\u7528\u6237\u53ea\u6709\u8bfb\u7684\u6743\u9650"}

2. 加了JSON_UNESCAPED_UNICODE时,结果为:{"a":"只有所有者有读和写的权","b":"所有者有读和写的权限,组用户只有读的权限"}
```

###### 技巧

- linux
    + df -h: 更易读的查看磁盘空间
    + du -h --max-depth=1 file_path:查看文件夹占用的空间,--max-depth文件夹下显示层级
    + sudo rm -rf \*.log:清理日志
    + socket
        * http socket = ip:port
        * unix domain socket: unix process communication 进程间通信
    + ubuntu16.04安装php5源:sudo apt-add-repository ppa:ondrej/php
    + ubuntu中文支持:sudo apt-get install language-pack-zh-hant language-pack-zh-hans
    + debian使用lantern无法启动: 安装依赖apt-get install libappindicator3-1
    + 查看端口占用:lsof -i:[端口号] / netstat -a(显示所有选项,默认不显示LISTEN)p(显示关联的程序)n(不显示别名显示数字) | grep [端口号]

- php:
    + json_encode($data, JSON_UNESCAPED_UNICODE)
    + php的自定义头信息都可以使用$_SERVER['HTTP_*']来获取
    + 如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()
    + error_log(json_encode($data, JSON_UNESCAPED_UNICODE), 1/3, 'tigerbcoder@gmail.com/log_path')
    + sudo watch service php5.6-fpm status
    + foreach后的好习惯reset指针位置,unset掉$key,$value
    + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    + laravel ['lærə,vɛl]
    + php中的语言结构:echo,exit(),print,empty(),unset(),isset(),list(),eval(),array()
- git:
    + git commit --amend 重写最近commit message
    + git cherry-pick 移花接木
- composer:
    + 修改包来源: sudo composer config repositories.包名 vcs 包地址

###### PHP的不足
- PHP还是有很多不足的地方,比如无法进行高效的运算

phpfpm配置 php中的坑的更多相关文章

  1. 菜鸟帮你跳过openstack配置过程中的坑

    一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...

  2. 菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]

    一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...

  3. Filezilla配置FTP中的坑以及出坑办法

    做本科生助教,老板让配置一个FTP传资料交作业,找了一台Windows服务器捣鼓,开始按网上教程自己配置特别麻烦,何西西说用Filezilla比较方便,就去Filezilla官网下载了Filezill ...

  4. [Jenkins] 配置任务中的坑s

    Jenkins 坑1:sh: adb: command not found 背景:在任务中使用了adb命令 adb 使用时要在服务器上配Android-home的环境变量的 配置完成之后发现在服务器上 ...

  5. Redis配置过程中的问题

    记录一下配置过程中的坑~~ 当Redis在服务器上安装完成后,get.set没有问题了,接下来在程序中使用看看... 首先 在配置文件redis.conf中,默认的bind 接口是127.0.0.1, ...

  6. 转 php 5.3.6中php-fpm 配置

    php 5.3.6 中 php-fpm 配置 成 服务启动 从php5.3.3开始 源码中开始包含 php-fpm,不用专门再打补丁了,只需要解开源码直接configure, 关于php-fpm的编译 ...

  7. 记pytorch版faster rcnn配置运行中的一些坑

    记pytorch版faster rcnn配置运行中的一些坑 项目地址 https://github.com/jwyang/faster-rcnn.pytorch 一般安装配置参考README.md文件 ...

  8. 关于在eclipse中配置tomcat的各种坑

    先说在windows下的,java环境什么的就不再记录了,记住装java ee之前,先要装好java se这样java ee才能顺利安装. 主要是安装好tomcat之后,在eclipse中进行配置的时 ...

  9. 高流量站点NGINX与PHP-fpm配置优化(译)

    使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置. 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比T ...

随机推荐

  1. ubuntu 安装 pythonenv

    This will get you going with the latest version of pyenv and make it easy to fork and contribute any ...

  2. webpack3.x基本配置与总结

    基本配置 1.开始之前,请确定你已经安装了当前 Node 的较新版本. 2.然后在文件夹根目录下执行以下命令初始化项目并全局安装webpack: 1.$ cnpm init // 初始化项目 2.$ ...

  3. 系统 TIME_WAIT累积与端口耗尽的问题

    调整内核参数 net.ipv4.tcp_tw_reuse = net.ipv4.tcp_tw_recycle = 这两个参数可以让 tcp 连接回收.再利用. 摘录  『HTTP 权威指南』page ...

  4. Linux入门篇(三)——文件与目录

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

  5. Android 获取唯一标识替代方法

    private static String getTheOnlyID() { String onlyOne; //获取IMEI TelephonyManager TelephonyMgr = (Tel ...

  6. JS函数的参数声明中用 var 与不用 var的区别

    1.var 声明的变量,作用域是当前 function 2.没有声明的变量,直接赋值的话, 会自动创建变量,但作用域是全局的. 例如: function doSth() { a = "AAA ...

  7. 移动端页面 css reset

    这个是通用的  css reset.这个版本适用于 移动端页面 如果需要在 PC端使用,可以 修改 html{font-size: 10px;}为html{font-size: 12px;} 其他地方 ...

  8. linux中搭建solr集群出现org.apache.catalina.LifecycleException: Failed to initialize component ,解决办法

    07-Jan-2018 20:19:21.489 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to i ...

  9. hive问题: For direct MetaStore DB connections, we don't support retries at the client level

    已经配置好hive,mysql作为元数据的数据库.在hive中执行drop语句出错: drop table mytest; 错误提示如下: FAILED: SemanticException Unab ...

  10. linked lists in .NET

    链表是数据结构中存储数据的一种形式.分为单向链表和双向链表以及循环链表.LinkedList是泛型链表,用节点存取,节点类型为LinkedListNode<T>,每个节点都有Next和Pr ...