phpfpm配置 php中的坑
###### 记一些坑
```
//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中的坑的更多相关文章
- 菜鸟帮你跳过openstack配置过程中的坑
一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...
- 菜鸟帮你跳过openstack配置过程中的坑[文末新添加福利]
一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...
- Filezilla配置FTP中的坑以及出坑办法
做本科生助教,老板让配置一个FTP传资料交作业,找了一台Windows服务器捣鼓,开始按网上教程自己配置特别麻烦,何西西说用Filezilla比较方便,就去Filezilla官网下载了Filezill ...
- [Jenkins] 配置任务中的坑s
Jenkins 坑1:sh: adb: command not found 背景:在任务中使用了adb命令 adb 使用时要在服务器上配Android-home的环境变量的 配置完成之后发现在服务器上 ...
- Redis配置过程中的问题
记录一下配置过程中的坑~~ 当Redis在服务器上安装完成后,get.set没有问题了,接下来在程序中使用看看... 首先 在配置文件redis.conf中,默认的bind 接口是127.0.0.1, ...
- 转 php 5.3.6中php-fpm 配置
php 5.3.6 中 php-fpm 配置 成 服务启动 从php5.3.3开始 源码中开始包含 php-fpm,不用专门再打补丁了,只需要解开源码直接configure, 关于php-fpm的编译 ...
- 记pytorch版faster rcnn配置运行中的一些坑
记pytorch版faster rcnn配置运行中的一些坑 项目地址 https://github.com/jwyang/faster-rcnn.pytorch 一般安装配置参考README.md文件 ...
- 关于在eclipse中配置tomcat的各种坑
先说在windows下的,java环境什么的就不再记录了,记住装java ee之前,先要装好java se这样java ee才能顺利安装. 主要是安装好tomcat之后,在eclipse中进行配置的时 ...
- 高流量站点NGINX与PHP-fpm配置优化(译)
使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置. 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比T ...
随机推荐
- 实现全屏轮播,并且轮播div中的文字盒子一直自动垂直居中
效果如下: 直接上代码了: 说明:轮播图基于swiper.js,自行下载.css在最后 <!DOCTYPE html> <html lang="en"> & ...
- requireJS(版本是2.1.15)学习教程(一)
一:为什么要使用requireJS? 很久之前,我们所有的JS文件写到一个js文件里面去进行加载,但是当业务越来越复杂的时候,需要分成多个JS文件进行加载,比如在页面中head内分别引入a.js,b. ...
- @Autowired内部实现原理
@Autowiredprivate CustomerDao customerDao; public void addCustomer() { customerDao.add ...
- 【原创】重复造轮子之高仿EntityFramework
前言 在上一篇<[原创]打造基于Dapper的数据访问层>中,Dapper在应付多表自由关联.分组查询.匿名查询等应用场景时经常要手动写SQL语句.看着代码里满屏的红色SQL字符串,简直头 ...
- UWP 手绘视频创作工具技术分享系列 - Ink & Surface Dial
本篇作为技术分享系列的第四篇,详细讲一下手绘视频中 Surface Pen 和 Surface Dial 的使用场景. 先放一张微软官方商城的图,Surface 的使用中结合了 Surface Pen ...
- APP瘦身绝技(快速减少包大小)
如果要清理无用类文件和无用图片,参考博客<iOS 清理Xcode项目中没有使用到的图片资源和类文件>.当下众多app项目,尤其是初创公司,明显的特点就是,开发周期短,迭代更新快,甚至一周一 ...
- css条纹背景
一. 水平条纹 1. 两种颜色: html <div class="stripe"></div> css .stripe{ width: 250px; he ...
- linux下的磁盘挂载
将新的磁盘安装在服务器上后,怎么挂载到现在的服务器上呢? 1.查询是否已经分配磁盘 fdisk -l 这里因为测试,只是挂载了10G的硬盘 2.发现有磁盘/dev/sdb.然后使用fdisk命令建立分 ...
- nmon进行性能分析
在压测的时候,搭配nmon,可以很好的记录机器cpu情况,内存情况 下载 需要下载nmon和nmon analyser,到各自的官网下载. nmon可以根据自己的操作系统版本下载二进制文件,免去安装. ...
- PHP读取excel中地址实现多文件下载
PHP文件下载有单文件和多文件之分,如果是单文件写个方法可以实现,但是如果想循环下载多个文件我试验是没有成功.先说单文件的下载,方法如下: function downfile($fileurl) { ...