最近写猪比的GOCQ托管服务,遇到了几个小坑,这里记录一下
一、PHP的exec函数执行需要挂在后台的操作
需要用exec运行gocq,一开始我是这么写的:
exec("cd ./gocq/0/3582675884/ && nohup ./go-cqhttp 3582675884 az &"); |
说白了就是使用nohup &
来后台运行。
但是这么做有个缺点,就是无法获取到终端的返回值。
不过这倒不是问题,毕竟用nohup执行的一般也不需要返回值,那么直接
header("Connection:close"); |
不要让前端等太久以至于524
不过问题很快来了,跑了一段时间相安无事,但是突然ps aux | grep go-cqhttp
发现进程无了
然后又试了很多种情况比如去掉nohup
等,都没用
不卖关子了,直接给出正解:
exec("cd ./gocq/0/3582675884/ && ./go-cqhttp 3582675884 az > /dev/null &") |
这样的话就是把所有输出全部扔掉(应该是),不知道具体为啥,反正这样写之后再也没掉过
也可以尝试这种方法
二、cookie作用域问题
写了一个很常见的页面,点按钮就会设cookie然后跳转到另一个详情页面
然后两个按钮分别点了一下,按理说详情页面根据cookie不同内容也会不同,但是点进去后发现两次内容全部相同。
然后看了一下Cookie,发现有两个相同的cookie。
原来是这两个cookie作用域不同,结果导致PHP获取到的一直是另一个cookie
那好吧,我们就统一一下作用域呗
setcookie(键, 值, 过期时间, 作用域); |
然后js的话我用的是jq的cookie插件,详见菜鸟教程
三、关于MDUI一些建议(一)
MDUI有个自适应的网格布局,比如说.mdui-row-sm-6
就是小屏幕设备及以上分两栏显示。
但是如果仅仅是分两栏显示的话,不建议用网格布局(会很难看),可以用
<div class="mdui-clearfix"> |
这样,如果是移动设备的话可以写个判断,结合jq的$(selector).width();
等进行适配
四、关于MDUI一些建议(二)
网格布局文档里说.mdui-row
必须要在.mdui-container
中,但是mdui-container
的边距某些情况下就相对较大
可以将.mdui-container
改为.mdui-m-x-1
这样,设置x轴的margin
为8px,这个边距就好很多了
注:以上MDUI版本为
1.0.1