什么是硬删除,什么是软删除
用无间道做例子
状态标记位还是独立字段
禁用和删除的区别 - 不同角色之间的显示不同
参考:
网上看的
1 | <?php |
session
和 token
,在我看来,没啥不同,都是一种客户端和服务端保持链接得一种解决方案,只不过 session
由服务器帮我解决好了,而 token
则需要自己来处理
当然还是有区别的,比如
session
就要解决跨域等问题
session
更多的是,单机时代的一种解决方案,而 token
更适应现在的使用场景
一般来说 浏览器中的 cookie
中会存有 session_id
,如果禁止 cookie
使用,可以在 url
链接中带有 session_id
一般来说 session
都是保存在一台服务器的文件目录上,为了达到分布式效果,有几种方案。
session
目录共享,oss
或者挂载session
驱动,可以把 file
驱动,替换成 redis
, 这样子就可以支持分布式了session
保存到 mysql
中当然还有其他的方案,其中的效果和优缺点,只有实际使用才能真正知道了。
在 restful
,前后端分离项目中,token
还是比较好用的,毕竟大部分的 session
,还是依赖 cookie
,而在app端没有 cookie
这个东西(存疑,毕竟我不了解app), token
可以自定义的 uuid
,也可以 jwt
。
提供一种通用的设计
后端只需提供3个接口,分别是 getUuid,isLogin,loginByQrcode
pc端切换到二维码扫码界面时,请求getUuid接口, getUuid接口生成一个uuid,存入到redis中,可设置过期时间1
2
3// 伪代码
$uuid = uniqid();
redis->set($uuid, 'login', 60 * 5)
PC前端一直轮询isLogin接口,isLogin接口判断uuid是否过期,判断是否uuid是否还未被二维码扫码,判断uuid的值是否已经跟token关联1
2
3
4
5
6
7
8
9
10
11
12
13
14// 伪代码
$uuid = input('uuid');
if (empty($uuid)) {
return '参数错误';
}
$token = redis->get($uuid);
if (empty($token)) {
return '二维码超时';
}
if ($token == 'login') {
return '手机还未扫码';
}
return $token
手机端已登录情况下扫码,获取到二维码的信息,即uuid,然后通过loginByQrcode接口,把token跟uuid信息关联到redis中1
2
3
4
5
6
7
8
9
10
11// 伪代码
$uuid = input('uuid');
$token = input('token');
$uuid = redis->has($uuid);
if (empty($uuid)) {
return '二维码过期,请刷新页面';
}
// 获取用户信息
redis->set($uuid, $token, 60 * 5)
1 | { |
./vendor/bin/phpcs --standard=PHPCompatibility --runtime-set testVersion PHP版本 project_php --extensions=php --report=summary --report-file=/log_path
php 数组很好很强大,下面展示一些个人常用到的事例
1 | $example = [ |
array_column($example, 'id')
1 | Array |
array_column($example, 'name', 'id');
1 | Array |
array_column($example, null, 'id')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Array
(
[1] => Array
(
[id] => 1
[name] => alpha
[age] => 18
)
[22] => Array
(
[id] => 22
[name] => berry
[age] => 28
)
[33] => Array
(
[id] => 33
[name] => cherry
[age] => 38
)
)
1 | $sum = array_sum(array_map(function($val) { |
网上充斥着vagrant安装教程,个人感觉比较简陋,在使用过程中,我把产生的问题,梳理一遍。
注:以下操作都是在windows下,其他系统不做参考
安装完毕后,
最好
修改虚拟电脑位置,vagrant 默认安装在C盘,一般来说C盘都比较小,放在更大空间的盘符里比较合适
操作:打开管理器 => 管理 => 全局设定 =>常规 => 默认虚拟电脑位置(假设D:\virtualbox_vms)
正常来说,vagrant命令会自动加载到环境变量里面,若没有,则重新安装,或者参考网上系统变量加载方式
- 项目主路径 D:\vagrant_project
- 虚拟电脑路径 D:\virtualbox_vms
- 从http://www.vagrantbox.es/下载合适的box,这里以centos7为例,放在D:\vagrant_project下
win+R
,输入cmd
后切换到 D:\vagrant_project\test01下test01是项目名
此时产生Vagrantfile,这里面可以修改参数,比如改变内存大小,通过ip访问等等
或者3.3步之后修改Vagrantfile,配置ip,就可以通过第三方ssh软件登陆
其他命令,自行查找
,eg:vagrant reload,vagrant box list 等一般下载的box空间都不大,这个时候需要扩容
参考:
https://gist.github.com/christopher-hopper/9755310
http://blog.csdn.net/zxjxingkong/article/details/62419379 (main)
rm -f /etc/udev/rule.d/70-persistent-net.rules
mycentos.box
–base centos
centos根据具体名称