28

05-2021

hyperf的四种协程方式使用

hyperf的四种协程方式使用

swoole的协程是单进程单线程的,是不能利用多核的,想使用多核需要通过添加work数来实现。这里和go本质区别就是,worker内的全局函数是进程内共享的,全局共享需要通过共享内存等其他方式实现;

gin cookie使用的小坑(illegal base64 data at input byte )

常用的go base64编码解码,有两个标准库

7

04-2021

golang一点学习总结

golang一点学习总结

好久没有在博客更新文章了,现在习惯在wiki里面写了,更方便一点,最近正好系统学习了下go,然后域名申请了下https,发现自己确实太懒了,还是不应该放弃自己一直都喜欢写东西的习惯,这两年从技术上,生活上各方面还是有很多值得记录的事情。

10

02-2017

PHP数组组合穷举方法

某些业务场景下,我们会用到组合穷举方法,这里整理几个穷举方法 1、不限顺序的数组组合穷举:

20

12-2016

PHP检查微信域名屏蔽接口

微信里域名总是被微信拦截,或者域名被微信屏蔽,辛辛苦苦推广,却不知道微信里域名爆红了。给大家介绍一个微信分享域名防屏蔽 防微信拦截网址系统 可以实时查询域名是否被微信拦截,实时检测微信屏蔽域名api,有用没用自己试试就知道了。 使用方法多种多样。

memcache内存分配策略及内存计算

今天研究了一下memcache的内存分配策略,发现其和redis的确是有很大不同的,很多人知道memcache是提前预占用内存的,并且,其内存的占用是定长的,所以其内存的占用是可以被计算出来的。但是,其分配策略不是那么简单的,其合理的设置调优,也并不是那么容易的事情。下面就讲一下我的理解。以及-m参数认为无效的原因。 理解memcache的确必须先理解 slab、page、chunk 三个概念。page组成了slab,chunk组成了page,chunk是数据真实存储的位置,默认情况下,page的大小是1M,当然这个可以通过参数修改,chunk默认从96B开始,以1.25的倍数在slab区间增长。即,slab1 的chunk为96B,那slab2的所有chunk都是120B,那slab3的所有chunk就是150B,依次类推。因为page大小都是1m,那么相当于chunk的个数就确定了,如果slab1有一个page,那么就应该有10922个chunk,在内存未达到配置内存上限的时候,这个page是可以增加的,但是这里增加的单位就是page,也就是1M,比如已经存了10922个96B以下数据的key,再存一个新的,内存又没有达到配置上限,就会page增加,相应的也就再增加10922个chunk。下面具体代码看一下

shell监控load以及小数判断

简单的shell监控服务器负载的话,可用使用uptime命令,获取load,然后根据使用awk,和你预定义阈值对比 只不过shell小数做比较需要特殊处理一下

纯php做类似php-fpm多进程管理服务

php-fpm,以及现在比较火的workman,swoole,其都是使用的多进程的管理模式,使用manger进程,管理其子进程,今天通过纯php做了一个类似的小东西,这样以后再做守护脚本的时候,可以使用这种方式,好处就是,多进程,更能利用多核的优势,并且可以做平滑重启。 本代码实现的功能,可以自定义子进程数,比如你定3个子进程,运行会产生1个manger进程,3个work进程,通过linux信号,来实现,进程的平滑重启。

file_put_contents和fwrite对比,以及他们在高并发下问题

先说结论,单次性能,file_put_contents要比fwrite好,这个也很好理解,因为写入文件,file_put_contents就一行代码,fwrite至少三行,虽然不是说代码行少就一定快,但就这个写入功能来说,file_put_contents就等于fopen fwrite fclose,之所以前者快,就是因为一次api交互,直接干了这三件事,后者有三次api的开销。

php fseek读取超过内存大小文件

可能有一些人就听过这样的面试题,做web程序的,的确在类似这样的问题上有很大的思路上的差异。包括我们做批处理的脚本程序,其实和我们普通的web程序是有区别的。后面我会抽出时间通过file_put_contents函数说一下类似的区别。这篇文章说一下操作大文件的处理,一种方式,当然做切割,当然,还有一种方式就是,我们可以通过fseek制定指针读取位置;