PHP队列SplQueue

PHP队列SplQueue
队列(Queue) 异步并发的服务器里经常使用队列实现生产者消费者模型,解决并发排队问题。PHP的SPL标准库中提供了SplQueue扩展内置的队列数据结构。另外PHP的数组也提供了array_pop和array_shift可以使用数组模拟队列数据结构。 SplQueue $queue = new SplQueue; //入队 $queue->push($data); //出队 $dat...

阅读全文>>

阅读全文...

利用msg_id应对通知业务的去重设计

利用msg_id应对通知业务的去重设计
情景 在许多常见场景如支付回调的消息通知,需保障消息可靠性,实行消息至少传达一次的策略,即通知时根据业务方响应的状态码、返回码、响应时间来判定业务有效性,如未响应正常的业务状态,通知服务应重新通知。 msg_id的应用及生成 中大型厂商在做消息通知时都会附带msg_id参数,以此便于业务方回溯、去重 msg_id生成方法没有明确规定,一般需符合以下特点: ...

阅读全文>>

阅读全文...

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里面的任意文...

阅读全文>>

阅读全文...