Nginx配置Thinkphp

server {
    listen 80;
    root /data/web/html/blog.phpfs.com;
    index index.php index.html index.htm;
    server_name blog.phpfs.com;
    access_log /data/logs/nginx/blog.phpfs.com-access.log main;
    error_log /data/logs/nginx/blog.phpfs.com-error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
        #access_log off;
        expires 30d;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/dev/shm/php5.6-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

Laya发布模式区分

1内嵌模式

该模式导出时会将页面的配置信息导出为项目代码文件

 export class RuntimeTestUI extends Scene {
        public static  uiView:any ={"type":"Scene","props":{"width":640,"height":1136},"compId":2,"child":[{"type":"Image","props":{"y":0,"x":0,"width":206,"skin":"comp/image.png","name":"Image_Bg","height":170},"compId":5}],"loadList":["comp/image.png"],"loadList3D":[]};
        constructor(){ super()}
        createChildren():void {
            super.createChildren();
            this.createView(RuntimeTestUI.uiView);
        }
    }

2加载模式

会将所有页面的配置信息导出为json格式的一个文件

export class RuntimeTestUI extends Scene {
        constructor(){ super()}
        createChildren():void {
            super.createChildren();
            this.loadScene("demo1/RuntimeTest");
        }
    }

3分离模式

UI界面上所有组件的属性、界面布局等逻辑与界面内容分离开,分离模式也是导出为json格式,但有所区别的是分离模式会将每一个页面独立导出,会产生多个json文件。

4文件模式

不生成场景类,进一步减少文件大小,使用的时候用Scene.load方式加载。区别于前三种最大的的不同就是,文件模式不能直接调用场景内的变量,需要getchild获取之后进行操作。前三种的场景类里声明了变量,有代码提示直接可以操作内部的变量。

MySQL数据表生成Wiki格式数据字典

<?php
$dbms='mysql';     //数据库类型
$host='localhost'; //数据库主机名
$dbName='joyous';    //使用的数据库
$user='test';      //数据库连接用户名
$pass='123456';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";

$table = array(
    't_user' => '用户表',
    't_user_info' => '用户扩展信息表',
 
);
try {
    $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
    $dbh->query('set names utf8');
    foreach ($table as $k => $v) {
        echo "### {$k}({$v})\n\n";
        $res = $dbh->query("SHOW FULL FIELDS FROM {$k}");
        $res->execute();
        $result = $res->fetchAll();
        echo "| 参数名称 | 类型 | 非空约束 | 备注说明|\n| ------ | ------ | ------ | ------ |\n";
        foreach ($result as $row)
        {
            echo "|{$row[0]}|{$row[1]}|{$row[3]}|{$row[8]}|\n";
        }
        echo "\n\n";
    }
} catch (PDOException $e) {
    echo $e->getMessage();
}

对比文件内容

需求从A文件当中查找不存在B文件当中的内容

方案1、

diff -B a.txt b.txt |awk '/</{print $2}'

#如果文件过大diff会超出内存就没法玩了~

方案2、

sort a.txt b.txt b.txt | uniq -u > c.txt
#排序并去重

方案3、

awk '{if(ARGIND==1) {val[$0]}else{if($0 in val)  delete val[$0]}}END{for(i in val) print i}'  a.txt b.txt > c.txt

其他命令参考:

#拆分文件
split -l 5000000 -d -a 3 c.txt
将c.txt按照每个文件500w行拆分,后缀是数字,并且后缀长度是3

坑爹的BOM

场景:开发小程序使用wx.request请求数据时提示Cannot read property of ‘xxxx’ undefined……..

原因:request返回的数据会默认会经过JSON.parse函数转换为Object,如果返回内容带有BOM就会影响转换

解决办法:

1.服务器端返回数据去除BOM(一般的IDE都有这样的功能)

2.编写兼容代码(在小程序内wx.request设置dateType:’text’,然后将返回的res.data进行去除字符res.data.trim()处理之后调用JSON.parse转换)

小程序wx.uploadFile失败的问题排查记录

现象:部分安卓(华为meta9)下用canvas画图之后使用wx.canvasToTempFilePath保存文件,然后再使用wx.uploadFile上传到服务器,上传图片失败

尝试方案:

1、canvasToTempFilePath延迟执行(怀疑是不是生成图需要时间,就加了延迟执行) ,结果:还是不能上传

2、设定header(网上有说编码的问题,我设置了header)
 header: {
      ‘content-type’: ‘multipart/form-data’
    },
结果:还不能上传

3、服务器记录的日志当中看到华为上传的FILE是这样的

最终解决方案:

服务器端判断上传文件类型,通过file_put_contents写入到文件

结果:成功

备注:

这个图片导出同样是安卓机器,在小米5导出是这样的

而且华met9上是这样的

PHP取余的那些事

1、百分号取余

$val=9.45; 
$result=$val*100;
echo intval($result);   //这里输出944
echo $result%100;    //这里输出44
echo fmod(floatval($result),100);  //这里输出45

解释:因为php默认对变量进行取整进行取余运算的

2、取余溢出

<?php
$num1 = 1494313163777;
$num2 = 9999;
//直接计算取余会出错,出现负数 -8779
echo $num1 % $num2;

//解决方案:
$num1 = floatval($num1);
$luck_num = fmod($num1, $num2);
//显示38正确
echo $luck_num;