phpfpm配置 php中的坑

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113817.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • velocity定义_velocity模板

    velocity定义_velocity模板文章目录基本用法导入依赖1.基本用法1.1注释1.2替换变量1.3不解析,原文输出1.4调用对象方法指令setifelse基本用法导入依赖<dependency> <groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>1.7</version></dependency&

    2022年10月19日
    1
  • 转录组fpkm是什么意思_fpkm值越大表达量

    转录组fpkm是什么意思_fpkm值越大表达量在转录组测序(RNA-Seq)中,基因的表达量是我们关注的重点。基因表达量的衡量指标有:RPKM、FPKM、TPM。RPKM:ReadsPerKilobaseMillion;说实话,这个英文说

    2022年8月3日
    39
  • linux 没有root权限的用户安装GCC[通俗易懂]

    linux 没有root权限的用户安装GCC[通俗易懂]在Linux下,如果有root权限的话,使用sudoaptinstall就可以很方便的安装软件,而且同时也会帮你把一些依赖文件也给编译安装好。但是如果不是用的自己的机器,一般情况下是没有root权限的。所以就需要自己动手下载tar文件,解压安装。在安装中遇到的最大的问题是依赖的问题。手动下载编译GCC,首先下载tar文件,可以在这里下载https://ftp.gnu.org/gnu/gc…

    2022年5月26日
    33
  • CAN协议 J1939「建议收藏」

    CAN协议 J1939「建议收藏」转自:http://blog.sina.com.cn/s/blog_bf97bd7e0102wl2y.html这几天在公司看了SAE推行的J1939标准(SAE:美国汽车工程协会),这里整理下学习要点,主要包含以下几个协议:物理层SAEJ1939-11(未看)数据链路层SAEJ1939-21网络层SAEJ1939-31(未看)应用层SAEJ1939-…

    2022年5月26日
    58
  • pycharm调试和运行的区别_pycharm调试debug入门

    pycharm调试和运行的区别_pycharm调试debug入门pycharm运行代码时,启动的是测试方案https://blog.csdn.net/qq_41810188/article/details/107359647

    2022年8月27日
    4
  • idea如何打包_用两种方法表示13

    idea如何打包_用两种方法表示13方式一、build打包1、进入projectstructure2、要选择启动类以及MANIFEST.MF选择src目录下即可3、进行build打包打包后生成jar包应该位于项目下out目录中。(如果启动有问题无法解决,可尝试方式二)方式二:maven打包1、pom添加依赖<build><plugins><plugin><groupId>org.springfram

    2022年9月27日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号