Kevensuu's Blog

Mac 升级 Sierra 后 Zsh 更新失败

Mac 升级 Mac Sierra 后,Oh My Zsh 升级失败,错误提示如下:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

解决方法:

sudo xcode-select --install

执行上面命令后,安装相应插件,即可。

Laravel 框架使用

1、安装
1)、安装方法

2)、项目目录结构

2、路由

1)、指向控制器

2)、传递参数

3)、指向视图

3、控制器

创建控制器:php artisan make:controller Home/IndexController

1)、DB操作

2)、指向视图、传递数据给视图

4、视图

1)、公共部分 怎么共用

2)、数据传递给所有视图

5、发布

PHP 控制 API 接口请求频率限制

这里我们使用 redis 来实现这个功能:

方法1:

function limit_api_call_1()
{
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);

    $key = "rate_control";

    // 判断请求次数是否超限    
    $rate_value_current = $redis->get($key);
    if($rate_value_current > 10)
    {
        return false;
    }

    // 请求次数+1
    $rate_value = $redis->incr($key);
    
    // 设置KEY有效期
    if($rate_value == 1)
    {
        $redis->expire($key, 1);
    }

    return $rate_value;

}

方法2:

PHP 加解密函数

PHP 加密

function string2secret($str, $key)
{
   $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
   $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
   $ks = mcrypt_enc_get_key_size($td);

   $key = substr(md5($key), 0, $ks);
   mcrypt_generic_init($td, $key, $iv);
   $secret = mcrypt_generic($td, $str);
   mcrypt_generic_deinit($td);
   mcrypt_module_close($td);
   return base64_encode($secret);
}

PHP 解密

function secret2string($sec, $key)
{
   $sec = base64_decode($sec);
   $td = mcrypt_module_open(MCRYPT_DES,'','ecb','');
   $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
   $ks = mcrypt_enc_get_key_size($td);

   $key = substr(md5($key), 0, $ks);
   mcrypt_generic_init($td, $key, $iv);
   $string = mdecrypt_generic($td, $sec);
   mcrypt_generic_deinit($td);
   mcrypt_module_close($td);
   return trim($string);
}

注意:这里需要 php 模块 mcrypt 支持

mysql group_concat 用法

需求:从一批数据中,按 live_id 分组取 id 最大的一个值,并按照 sort desc create_time 排序

测试数据如下:

可以看到有些 live_id 对应多条数据记录

composer 安装 Laravel 框架

Composer 作为 PHP 管理依赖(dependency)关系的工具,在使用 Laravel 框架中使用得较为广泛。

这里我们就来介绍一下通过 Composer 来安装 Laravel 框架的方法。


安装 Composer

curl -sS http://install.phpcomposer.com/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

解决 Vagrant 虚拟机用户权限问题

通过 Vagrant 虚拟机开发过程经常会遇到用户权限不足的问题,解决方法只需要修改一下 Vagrantfile 配置信息即可。

config.vm.synced_folder "/Users/sss/www/su_project/work_project/", "/data/src", create: true, owner: "root", group: "root"

这里我们只是在配置镜像同步后面添加相关用户信息

create: true, owner: "root", group: "root"

MAC 设置环境编辑

在 MAC 设置环境变量,尝试修改 /etc/profile.bash_profile 都不能全局生效,只在当前终端窗口有效,新建一个窗口就无效

最终发现和 Zsh 有关,安装了 Oh My Zsh 插件后,需要修改 Zsh 自己的配置 .zshrc

# 编辑 .zshrc
vim .zshrc

# 添加配置
alias ll="ls -al"

# 生效
source .zshrc

这样就可以全局使用自己新加的配置了。

PHP 防并发 insert 多条记录

方式1:通过 redis get|set 来实现

if($this->user_baby_model->get_lock($params['uid'], $params['bbtype']))
{
    $this->my_send_log->add(100012, array('add_baby_concurrent', date('Ymd-H:i:s'), $params), 1);
    return $this->error('Err.Unknown_error', 'the same request has exist');
}
else
{
    $this->user_baby_model->set_lock($params['uid'], $params['bbtype']);
}
public function set_lock($uid, $bbtype)
{
    $key = $this->set_lock_key($uid, $bbtype);
    return $this->my_redis->save_string('redis_bcache', $key, 1, 10);
}

public function get_lock($uid, $bbtype)
{
    $key = $this->set_lock_key($uid, $bbtype);
    return $this->my_redis->get_string('redis_bcache', $key);
}

public function set_lock_key($uid, $bbtype)
{
    return md5($uid.$bbtype);
}