php使用redis的有序集合zset实现延迟队列

php使用redis的有序集合zset实现延迟队列
延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。 延迟队列的应用场景: 1、新用户注册,10分钟后发送邮件或站内信。 2、用户下单后,30分钟未支付,订单自动作废。 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。 ...

阅读全文>>

阅读全文...

记imagepng在lnmp环境中无法输出保存图片问题

记imagepng在lnmp环境中无法输出保存图片问题
在网上查阅了很多资料说: 去除BOOM头 用ob_clearn();清除缓存 以上几个都没用,后来突然想起是不是没有权限生成文件?! 然后ssh登录终端,用chown命令修改目录属主就正常了 = = chown -R www:www ./gd

阅读全文>>

阅读全文...

【原创】PHP纯文本制表

【原创】PHP纯文本制表
有个打印机的项目让小V比较头疼:需要打印一个表格,原先是使用ESC/POS指令实现的,但是不同打印机会有兼容性问题,所以小V想自己写一个纯文本的表格,直接打印表格数据以此避免兼容问题,小V昨晚想着想着研究写到两点左右,2333,在此把一些代码分享出来,供广大网友参考! <?php /** * PHP纯文本制表 * @author Veris * @blog http://www.mo...

阅读全文>>

阅读全文...

记一次Session引起的数据操作漏洞

记一次Session引起的数据操作漏洞
php的session id生成方法大致如下: PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器) 客户端访问服务器时会自动分配一个session id给客户端(用cookie存储),所以不同浏览器访问都能获得一个不同的session id 问题场景如下: 小V在做的一个...

阅读全文>>

阅读全文...

【原创】ThinkPHP事务结束问题

【原创】ThinkPHP事务结束问题
TP5中对事务控制的代码如下: // 启动事务 Db::startTrans(); try{ Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回...

阅读全文>>

阅读全文...

tp5整合GatewayWorker

tp5整合GatewayWorker
1:安装最新的tp5 2:在tp5所在目录,cmd命令输入composer require workerman/gateway-worker-for-win  下载 3:前往workerman官网下载GatewayWorker demo 取出Applications/Yourapp中的文件全部复制到thinkphp5目录application里面的任意文...

阅读全文>>

阅读全文...

tp5分页修改为ajax分页

tp5分页修改为ajax分页
后台代码 $list = LogRecharge::where('member_id', $id)->order('id desc')->paginate(10, false, ['type' => 'Bootstrap', 'var_page' => 'page', 'path' => 'javascript:ajax_recharge...

阅读全文>>

阅读全文...

【原创】时限业务到期检测方法

【原创】时限业务到期检测方法
网站业务中常常会有某些服务到期检测(如会员套餐到期检测): 1、简单到期检测,2018/2/8 21:16(当前时间)是否大于2018/2/8 20:00(截止时间) 2、观测时段到期检测,2018/2/8 21:16(当前时间)+3天(观测时段)是否大于2018/2/12 20:00(截止时间) 执行时段问题: 有些业务会要求在到期后的某个时间范围内执行相关业务,这...

阅读全文>>

阅读全文...