Mar
23
2020
PHP队列SplQueue
队列(Queue)
异步并发的服务器里经常使用队列实现生产者消费者模型,解决并发排队问题。PHP的SPL标准库中提供了SplQueue扩展内置的队列数据结构。另外PHP的数组也提供了array_pop和array_shift可以使用数组模拟队列数据结构。
SplQueue
$queue = new SplQueue;
//入队
$queue->push($data);
//出队
$dat...
Mar
19
2020
利用msg_id应对通知业务的去重设计
情景
在许多常见场景如支付回调的消息通知,需保障消息可靠性,实行消息至少传达一次的策略,即通知时根据业务方响应的状态码、返回码、响应时间来判定业务有效性,如未响应正常的业务状态,通知服务应重新通知。
msg_id的应用及生成
中大型厂商在做消息通知时都会附带msg_id参数,以此便于业务方回溯、去重
msg_id生成方法没有明确规定,一般需符合以下特点:
...
May
21
2019
php使用redis的有序集合zset实现延迟队列
延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。
延迟队列的应用场景:
1、新用户注册,10分钟后发送邮件或站内信。
2、用户下单后,30分钟未支付,订单自动作废。
我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。
...
Nov
23
2018
记imagepng在lnmp环境中无法输出保存图片问题
在网上查阅了很多资料说:
去除BOOM头
用ob_clearn();清除缓存
以上几个都没用,后来突然想起是不是没有权限生成文件?!
然后ssh登录终端,用chown命令修改目录属主就正常了 = =
chown -R www:www ./gd
Jul
20
2018
【原创】PHP纯文本制表
有个打印机的项目让小V比较头疼:需要打印一个表格,原先是使用ESC/POS指令实现的,但是不同打印机会有兼容性问题,所以小V想自己写一个纯文本的表格,直接打印表格数据以此避免兼容问题,小V昨晚想着想着研究写到两点左右,2333,在此把一些代码分享出来,供广大网友参考!
<?php
/**
* PHP纯文本制表
* @author Veris
* @blog http://www.mo...
Jul
13
2018
记一次Session引起的数据操作漏洞
php的session id生成方法大致如下:
PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)
客户端访问服务器时会自动分配一个session id给客户端(用cookie存储),所以不同浏览器访问都能获得一个不同的session id
问题场景如下:
小V在做的一个...
Jul
01
2018
【原创】ThinkPHP事务结束问题
TP5中对事务控制的代码如下:
// 启动事务
Db::startTrans();
try{
Db::table('think_user')->find(1);
Db::table('think_user')->delete(1);
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回...
May
18
2018
tp5整合GatewayWorker
1:安装最新的tp5
2:在tp5所在目录,cmd命令输入composer require workerman/gateway-worker-for-win 下载
3:前往workerman官网下载GatewayWorker demo 取出Applications/Yourapp中的文件全部复制到thinkphp5目录application里面的任意文...
最新评论
感谢分享,谢谢
谢谢分享
感谢分享
@impdx:是的,做业务太多了,算法题...
迎难而上!算法和数据结构对于有经验的程序...
了解
@欧清辣哨:不客气~
你好nb,多谢了!
双击666
不错不错