###### 记一些坑

```
//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. unity图片后期处理

    处理算法如下,在Start方法中分别调用想要的效果就行了.其中,将你需要处理的 图片 拖拽到 image参数上.注意,如果想要图片保持原来的尺寸不被压缩,需要更改图片的导入设置如下图,主要的Textu ...

  2. ogg12c_静默安装

    1.上传压缩包:123010_fbo_ggs_Linux_x64_shiphome.zip 2.解压: unzip 123010_fbo_ggs_Linux_x64_shiphome.zip 3.配置 ...

  3. xampp的安装和配置

    这几天一直在做一个网站,客户要求要用PHP修改WordPress的themes,目的是交付完成后,客户自己管理方便. 以前从没有涉及过PHP,用的是jsp,但是,既然已经选择接受,就只能让自己去适应客 ...

  4. ant安装和验证

    1.下载apache-ant-1.9.6 2.D:\software\apache-ant-1.9.6 3.配置环境变量 在系统变量path的最后面添加D:\software\apache-ant-1 ...

  5. Validation of viewstate MAC failed 解决办法

    大部分人都说是在页里或web.config里加EnableEventValidation="false" EnableViewStateMac="false" ...

  6. Windows批量添加防火墙例外端口

    Windows下批量添加防火墙例外端口,查了网上资料,基本上都是使用"Netsh命令",循环增加端口,这会导致建立的规则特别多,不便于管理,查了下微软的资料,原来是Netsh命令, ...

  7. Python 的类的下划线命名有什么不同?

    1.   以一个下划线开头的命名 ,如_getFile2.  以两个下划线开头的命名 ,如__filename3.  以两个下划线开头和结尾的命名,如 __init__()4.  其它 单下划线前缀的 ...

  8. 前端js之JavaScript

    知识预览 一小知识 二 JavaScript的基础 BOM对象 DOM对象 实例练习 js拓展 小知识 核心(ECMAScript) 文档对象模型(DOM) Document object model ...

  9. Ftplib模块的用法

    login(user='',passwd='', acct='') 登录到FTP 服务器,所有的参数都是可选的 pwd() 当前工作目录 cwd(path) 把当前工作目录设置为path dir([p ...

  10. wifipineapple插件:codeInject的使用

    如果在中间人攻击的时候, 能在用户的网页中插入任意代码, 可以说已经完成一半了 wifipineapple有个codeInject插件, 可以让连上这个网络所有设备浏览网页的时候, 在网页中插入任意h ...