7月
25
1.继承BaseController预设公共变量
我们的视图有很多公共部分,比如导航菜单、底部信息、用户信息等,通常我们会以单独的视图组件来处理这些元素区块,但是如何从后端传递这些组件需要的数据变量是个问题,因为这些组件在多个页面中共用,从后端角度来看,会涉及到多个路由/控制器方法,难道我们要每次都重复获取并传递这些数据吗?有没有一种方式可以支持一处定义,多处复用?
那还用问,肯定有的叁,是不是脑海中闪现出了BaseController,嗯,是的,在没有接触laravel之前,通常我们处理上述问题的方法都是继承一个基控制器,把公共变量放在基类中实现,这样就能达到复用的目的,就像下面这样:
<?php
namespace App\Http\Controllers;
use App\Models\Config;
class BaseController extends Controller
{
private $cfg;
public function __construct()
{
$this->__init();
}
protected function __init()
{
$this->cfg = (object)Config::getAll();
}
}
继续阅读
7月
20
既然是再来一次定时任务,那我们就要有明确的目标以及观察点。来列列。
列列观察点
- 如何开启定时任务,开启多大频率或定时的任务,几种方式开启。
-
定时任务日志功能。(这样才能更好的找到问题的所在)
-
定时任务的执行用户。比如 root 用户,非 root 用户。这之间有什么影响和不一样。
-
额外, no login 用户的 shell 执行。
开启定时任务
方法 1:
# 编辑,并添加定时任务
vim /etc/crontab
方法 2:
# 给当前用户添加定时任务。如果是 root 用户登录的,就是给 root 用户添加定时任务(就是执行用户是 root)
crontab -e
# 给 nginx 用户添加定时任务(编写命令即可)
crontab -e -u nginx
给 root 用户添加定时任务的缺点是 root 用户产生的文件,其他用户默认是没权限去操作的。比如写了日志,其他用户想继续打开该日志来编写,是没办法操作的。除非改权限设置等操作。
方法 3:
vim cron.txt
# 将定时任务命令写在 cron.txt 里边,然后再执行
crontab cron.txt -u nginx
方法 4:
以上的方法,只是命令在其他 sh 文件里。
查看,重启,关闭
查看关闭:
# 查看当前用户执行的定时任务
crontab -l
# 查看 nginx 用户执行的定时任务
crontab -l -u nginx
# 删除当前用户执行的定时任务
crontab -r
# 删除 nginx 用户执行的定时任务
crontab -r -u nginx
重启:
//启动服务
service crond start
//关闭服务
service crond stop
//重启服务
service crond restart
日志
# 这里可以看到日志的
tail -f /var/log/cron
如果日志文件不存在(被删除了或啥的,请使用下面命令从新生起)
# 重启rsyslog服务:
service rsyslog restart
# 重启 cron
service cron restart
报错
如果使用 nginx 这种 nologin 用户执行定时任务会报错的。如下:
(CRON) ERROR chdir failed (/home/nginx): No such file or directory
这个时候,只需要在 home 目录下,创建个 nginx 文件夹就 ok 了。
参考
https://www.jianshu.com/p/5d6a0d729ef7
7月
17
条条大道通罗马,使用 linux 定时任务的方法也有很多种。都是 crontab,方式各不一样。列出常用,好用的一些命令。
基本
# crontab文件一般位于/etc/下,这里面存放系统运行的的调度程序
more /etc/crontab
# 每个用户都会生成一个自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下
cd /var/spool/cron
ls
# 查看当前用户或某个用户的定时任务,nginx 为用户
crontab -l nginx
# 编辑当前用户的定时任务
crontab -e
# 编辑某个用户的定时任务
crontab -e -u nginx
# 删除当前用户的定时任务
crontab -r
其实,laravel 使用定时任务不坑。坑的是一些细节问题。比如权限问题。如:root用户创建了定时任务,然后定时任务里边有了写日志的功能。这个时候,日志的用户组都是 root,然后其他用户组(nginx) 就没权限再写入数据了。这个时候,写入就会出错。这个就是坑。如果定时任务的用户是 nginx 就不会出现这个问题了。下边来下流程。
创建某个用户的定时任务
方式一
crontab -e -u nginx
# 然后在里边编写命令即可
方式二
# 创建命令文本(cron.txt)。再执行命令
# * * * * * nginx /alidata/service/php/bin/php /alidata/www/kwva/test.kwva.cn/artisan schedule:run >> /dev/null 2>&1
crontab cron.txt -u nginx
参考
https://learnku.com/articles/6775/about-laravel-log-permissions
https://www.runoob.com/linux/linux-comm-crontab.html
https://www.jb51.net/article/98640.htm
https://blog.csdn.net/matengbing/article/details/81056524
7月
09
使用 git 可以使用 sourcetree 这些工具。方便查看以及提交等操作。可有时候还是没命令来的爽快。这里就记录下 git 常用的命令,免得每次都要去找。
git
三个工作区:
1. 工作目录
2. 暂存区域
3. git 仓库 (本地和远程)
四种文件状态:
- Untracked (未跟踪)
- Unmodified (未修改)
- Modified (已修改)
- Staged (已暂存)
常规操作
# 添加所有
git add -A
git add .
# 添加某个
git add xxx.md
# 撤销添加某个文件(变成已修改状态)
git reset HEAD xxx.md
参考
https://cloud.tencent.com/developer/news/159103
https://my.oschina.net/pmos/blog/817191
https://www.cnblogs.com/lfxiao/p/9378763.html
[https://blog.csdn.net/hyupeng1006/article/details/82979258]
(https://blog.csdn.net/hyupeng1006/article/details/82979258)
https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192
https://www.jianshu.com/p/c2ec5f06cf1a
7月
09
客服功能很常见,也很好用。如果自己单独开发,考虑到的问题会比较多。还不如使用腾讯自己的客服。虽然我们自己的产品已经有了聊天功能,依旧想使用腾讯自己的客服。怎么使用呢。
调用组件,简单直接
在小程序中,只要添加一个 button 组件,open-type 设置为 concact
就可以了。
<button open-type="contact">有事没事找客服</button>
平台方接收消息
- 先在小程序后台,添加客服人员。最多可以添加 100 个。
- 客服人员扫码小程序二维码或扫码打开网页端客服的二维码。
- 进入小程序客服或网页端客服。开始接待了。可以自定义模式。比如自动接待手动接待。也可以设置在线离线。
添加步骤:
1. 登录 https://mp.weixin.qq.com
2. 找到左侧功能,找到客服。就可以操作了。
自己的服务器也可以接受消息
消息不仅自己可以收到,还可以设置自己的服务器接受存储消息。
更多内容请看:https://developers.weixin.qq.com/miniprogram/introduction/custom.html
7月
06
git 存在这样一个场景。曾经的代码用的 https 协议进行上传下载。这个时候,总是要输入用户名和密码。这样好烦好烦的。突然有一天,你想用 ssh 协议了(不用再输密码),这个时候就要切换协议了。下边就说说怎么操作。
没有公私秘钥,要生
# 生,一路回车就好
ssh-keygen -t rsa -C "abcd@mlxiu.com"
cat ~/.ssh/id_rsa.pub
生了后,先要将公钥内容复制出来,设置到你所托管的 ssh 设置相应的地方。比如托管的 gitlab 或 github,都有对应的地方设置。设置好了后,就可以切协议了。
查看切换协议
# 查看
git remote -v
# 切换
git remote set-url origin git@gitlab.xxxxxxx
然后你
git pull origin master
git push origin master
就不用再输入账号密码了。
7月
02
linux 下 tree 很好用的。方便查看文件夹以及子文件夹N个子子文件夹里的文件,并很好的展示出来。如下图:
下边来说说怎么使用和操作。
先安装
## centos
yum install tree
## ubuntu
apt-get install tree
没权限,请加 sudo
再使用
## 帮助
tree --help
## 显示某个文件夹下的(默认当前文件夹)
tree /usr/local
tree app
## -d 参数,只显示文件夹,不显示文件夹里的内容。如上图
tree -d
## -L n (n表示级数,是 int 类型,且必须)
tree -L 2 # 显示当前目录以及目录下的文件
不仅能展示,还能将展示的结构写到文本里,如:
sudo tree app -d -L 3 > /usr/local/src/tree.txt
# 查看保存的结果
cat /usr/local/src/tree.txt
就这样了。用到这几个就可以了。更多的功能待去揣摩。
7月
01
通常情况下,使用构建的命令就可以关闭对应的服务。可有时候 pid 被删了后,程序逻辑就关闭不了服务了。这个时候,就得用命令来关。
通常方式
laravel 中 swoole 为例
# 停止
php artisan swoole:action stop
# 启动
php artisan swoole:action start
当 pid 文件删除或被改后,就 stop 不了了。
命令方式
# 先查看端口对应的进程 id
netstat -tunlp|grep 9400
### 结果 tcp 0 0 0.0.0.0:9400 0.0.0.0:* LISTEN 2750/php
# 再 kill 进程 id 就完事了
kill -9 2750
# 查看进程信息 (当然在 kill 之前查看)
ps -ef|grep 2750
参考
https://www.cnblogs.com/moy25/p/8668432.html