4、PHP爬坑

作者: 回眸淡然笑 | 来源:发表于2017-09-22 16:12 被阅读17次

源文来自https://github.com/TIGERB/easy-tips,分享给大家 共同进步

//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还是有很多不足的地方,比如无法进行高效的运算

相关文章

  • 4、PHP爬坑

    源文来自https://github.com/TIGERB/easy-tips,分享给大家 共同进步 //phpf...

  • VUE 爬坑笔记 (4)

    兄弟组件之间传值 创建一个空的vue实例,作为事件总线 在数据源位置使用这个vue实例的$emit方法自定义一个事...

  • php array_map 爬坑之路

    array_map 每次用的时候,都提示报错 每次出错都去各种百度,当时是解决了,没有记下来,下次的时候,时间间隔...

  • PHP5.5及PHP7安装SCWS-1.2.3高效分词组件(上)

    前言: 为了折腾PHP分词从Windows版本到Linux版本爬了一个又一个的坑,SCWS 中文分词目前已经很快...

  • 爬坑

    文文很郁闷,最近他遇到一件不公平的事,在他看来,这是非常非常明显的不公平。 前段时间,公司要提拔一位主管,...

  • 爬坑

    伸手要钱的日子真不好过,无论是和父母,还是和爱人,她们嘴上说的好听,一旦你伸手要了,脸色立马变得难看了起来。谈钱注...

  • 爬坑

    经过了一年左右的痛苦煎熬,最近感觉快要从去年的那种浑浑噩噩的状态中解脱出来了。催收电话打来,想接就接,不想接就挂掉...

  • 适配iPhoneX全系详解,更新Xcode10爬坑

    适配iPhoneX全系详解,更新Xcode10爬坑 适配iPhoneX全系详解,更新Xcode10爬坑

  • 坑和爬坑

    又是一个出差13天的cycle,终于在星期天的下午3点落地小盆地,跟老公一起回到家已经是要赶着物管下班前去把水费给...

  • 归零活法之真爱密码 课后总结

    19年4月21日花了一天去给自己做心理massage,是我掉坑爬坑的很好的帮手。 *收获 1)人生都是在选择,不选...

网友评论

    本文标题:4、PHP爬坑

    本文链接:https://www.haomeiwen.com/subject/biyfextx.html