php

php 生成 RSS 订阅

php

rss文件本身是xml,只要找到它的规范,使用php 数组转xml 就可以了 代码实现 $data=[ 'title'=>'写代码的崔哥', 'link'=>'https://www.cuiwei.net/', 'description'=>'一名PHP程序员,涉猎广泛:PHP,运维,前端,Android,iOS。会不定期给大家分享一些技术干货', 'language'=>'zh-cn', 'pubDate'=>gmdate ('l d F Y H:i:s', time()).' GMT', 'lastBuildDate'=>gmdate ('l...

Redis 实现限流

php

下面介绍两种方法 zset function uuid(){ $str = "123456790abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; $uuid = ""; for ($i = 0; $i < 10; $i++) { $uuid .= $str[mt_rand(0, strlen($str) - 1)]; } return $uuid; } $time = time(); $key='limit:100'; $val = uuid(); $redis = new ...

php 使用 Kafka

Backend

kafka没有重试机制不支持消息重试,也没有死信队列,因此使用kafka做消息队列时,如果遇到了消息在业务处理时出现异常,就会很难进行下一步处理。应对这种场景,需要自己实现消息重试的功能。 自己实现重试机制 cli #停止 kafka-server-stop.sh #前台启动 kafka-server-start.sh config/server.properties #守护进程 kafka-server-start.sh -daemon config/server.properties #新建名为test2的topic,包含2个分区,1个副本 kafka-topics.sh --boots...

elasticsearch 分词

Backend

安装中文、拼音分词 https://github.com/medcl/elasticsearch-analysis-ik https://github.com/medcl/elasticsearch-analysis-pinyin 下载和elasticsearch对应的版本,解压后移到plugins目录 root@57d58faf9b1e:/usr/share/elasticsearch/plugins# ls ik pinyin 重启elasticsearch使生效 测试一下 默认分词 curl -H "Content-Type: application/json" -XPOST 'l...

elasticsearch 3种分页方式

Backend

本文将提供原始restfull api和elasticsearch-php的示例 from + size 不适合深度分页,max_result_window默认10k size, from类似sql语句里的limit, 如limit {from} {size}; size:每页条数 from:从第几个行开始,默认0 curl curl -H "Content-Type: application/json" -XGET 'localhost:9200/article/_search?pretty' -d' { "size": 2, "from": 0 }' php publ...

PHP 的一个依赖管理工具 - Composer

php

安装 curl -sfL https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer 包的来源 VCS(线上版本控制系统) composer.json { "repositories": [ { "type": "vcs", "url": "https://github.com/username/hello-world" } ], "require": { "ac...

基于docker的php开发环境,多容器

Backend

之前写过一篇 vagrant + virtualbox搭建一个可移动的开发环境,现在有了更好的选择,基于docker的php开发环境 拥有前者所有的优点 https://github.com/chudaozhe/dev-environment-php

RabbitMQ通过websocket与前端通信

php

本文主要介绍的是RabbitMQ的一个插件 —— STOMP,还有一个MQTT插件,也是不错的选择,详见:RabbitMQ插件之MQTT 如何安装rabbitmq,请移步:http://www.cuiwei.net/p/1371869141 启用stomp插件 vi enabled_plugins [...,rabbitmq_stomp,rabbitmq_web_stomp]. 重启rabbitmq后,访问 RabbitMQ Management 可以看到 http/web-stomp服务(ws)已经启动了,在15674端口上了 https/web-stomp服务(wss)已经启动了,在...

使用 Beanstalk 实现微信支付的异步通知

Backend

Beanstalk介绍 Beanstalk是一个基于内存的(binlog持久化到硬盘),事件驱动(libevent),简单、快速的任务队列,支持大部分编程语言,将前台的任务转为后台异步处理,为web开发提供更高弹性。它可以支持多个server(客户端支持),一个任务只会被投递到一台server,一个任务只会被一个消费者获取(Reverse)。 使用Beanstalk任务队列提升PHP异步处理能力,降低程序耦合度,使前台更专注,后台处理耗时、扩展性任务(也可以使用其他语言开发),使得web架构更具扩展性。 相比RabbitMQ,Beanstalk作为一个任务队列,设计比较简单,支持以下特性: ...

支付宝支付回调的处理

其他

支付宝异步通知会有很多参数,正常POST接收就行 注意:支付的异步通知和退款的异步通知是同一个url $data=$_POST; 验证签名 其验签步骤为: 第一步: 在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是待验签的参数。 TIPS: 生活号异步通知组成的待验签串里需要保留sign_type参数。 第二步: 将剩下参数进行url_decode, 然后进行字典排序,组成字符串,得到待签名字符串: 第三步: 将签名参数(sign)使用base64解码为字节码串。 第四步: 使用RSA的验签方法,通过签名字符串、签名参数(经过base64解码...