2018年6月

1.base64_encode可以替代rawurlencode吗?为什么?

不能,因为base64生成的结果包含字母数字+/=,而rawurlencode需要转义+=/

2. echo json_encode([]) 和 echo json_encode(['a'=>'b'])的区别是什么?

如果json_encode 传递空数组,返回的是json数组,否则返回的是json对象,但是这个在前端解析的时候是致命的,尤其在ios的解析库中,可能由于开发者不注意留意这个而造成app的崩溃,所以推荐使用 JSON_FORCE_OBJECT 参数来encode数组

1.进入一个已经start的container

#如果没有安装bash,需要apk add bash
docker exec -it <container_id> /bin/bash

2.根据Dockerfile构建镜像

docker build -t <image_name:tag_id> .

3.运行构建好的镜像为容器

#d为demon
docker run -itd <image_id>

4.删除容器

docker rm -f <container_id>

5.docker访问宿主

docker如果在windows下,那么在docker容器内ifconfig,假设:172.17.0.3,则宿主为:172.17.0.1
docker如果在mac下, `docker.for.mac.host.internal` 则为宿主域名

  1. 我们用php-cli写一些业务常用逻辑,然后需要打印一些有用信息到终端时,通常的 echo var_dump往往在显示数据较多多时滚动显示,这样不方便肉眼盯数据,此时可以用如下逻辑实现 wget 下载文件滚动条的实现:
    <?php
    for($n = 1; $n < 100; $n++) {

      echo chr(3); // 输出文本结束控制字符,这样可以清除之前输出的文本内容
      echo chr(8); // 将前一个控制字符删掉,避免在控制台留下控制字符的标记
      echo "inserting row $n\r";
      sleep(1); // 延时一秒是为了看清楚文字变化

    }

  2. model中有很多常量,建议开发者以 group 的方式设置:
    例如 : STATUS_ON , STATUS_OFF,
  3. windows下面添加服务
    首先需要定义一个可执行的bat文件,大致如下

    @echo off  
    start  "C:\Windows\System32\cmd.exe"   
    cd C:\xxxx\bbbb
    ## 这里是执行的具体内容
    exit

    添加服务

    sc create frp binPath= C:\Users\Administrator\Desktop\frp.bat start= auto

    然后到ctrl+shift+esc 找到服务,启动

  4. 当你对一个数组元素unset之后,你一定要小心,这个时候php由于中间缺了一个不连续的key,在json_encode的时候就会有key参与到json中,需要用array_values 重新构建索引

5.放弃ps -ef | grep nginx这种丑陋的做法吧,请使用pgrep
6.通过终端写入多行数据到一个文件

cat <<EOF > hello.php
<?php
echo "xueshop.cn";
EOF