几天前,写了个YurunLock,这是PHP阻塞锁和非阻塞锁机制,内置解决并发锁重复执行的方案。目前支持文件、Redis、Memcache、Memcached。
里面用到了文件锁,最开始文件解锁的时候我是直接fclose,因为看到w3school里说:
可以通过 fclose() 来释放锁定操作,代码执行完毕时也会自动调用。
后来群里@小黑屋 说这是在php5.3之前的了,于是我上php官网看了一下。。。
几天前,写了个YurunLock,这是PHP阻塞锁和非阻塞锁机制,内置解决并发锁重复执行的方案。目前支持文件、Redis、Memcache、Memcached。
里面用到了文件锁,最开始文件解锁的时候我是直接fclose,因为看到w3school里说:
可以通过 fclose() 来释放锁定操作,代码执行完毕时也会自动调用。
后来群里@小黑屋 说这是在php5.3之前的了,于是我上php官网看了一下。。。
如果你在PHP里做钱相关的计算时候一定要注意了,无论是PHP还是其它语言,在数字计算方面总会有浮点数精度丢失的问题出现。原因就不贴了,自己百度之,这里只提供PHP的解决方案,其它语言的自行百度。
我们可以使用PHP内置的BCMath扩展来做四则运算,不但可以解决精度丢失问题,还可以支持超大数字的计算。
对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1(或0x7FFFFFFF-1)。
BCMath函数仅在 PHP 编译时配置了 --enable-bcmath 时可用。
PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。
contenteditable 属性规定是否可编辑元素的内容,是html5的属性。
<div contenteditable="true"></div>
可以让这个div跟文本框一样可以编辑。
然而在iOS系统中,你还需要加入以下CSS才可生效。
-webkit-user-select:text
上周五同事反应说使用Yurun\Until\HttpRequest的时候,new一下时间特别长。国际惯例,在别的机子肯定都没问题。。。
百思不得其解之下,调试每句话,最后发现是构造方法里的这一句代码出现了问题:
$this->cookieFileName = tempnam(null === self::$tempDir ? sys_get_temp_dir() : self::$tempDir,'');
代码本身并没有错,sys_get_temp_dir()函数调用时间正常,后来发现tempnam()调用时间特别久……
我在开发一个接口时候,返回数据20多MB,这时候第一第二种出现了内存溢出问题。后来改用第三种,问题解决。
RT
最近开发了一个微信活动的后台,发现有些带有emoji表情的nickname保存进数据库会提示Incorrect string value错误。所以我们想要在mysql里存储emoji得使用utf8mb4编码的字段。
光这样还不够,我们还需要把php或者其它编程语言的数据库连接中的编码设置为utf8mb4才可以的。
RT
今天客户给我反映了一个之前做的自定义表单系统问题,导出报表出错,我导出报表用的是PHPExcel。看了一下错误信息是“Invalid cell coordinate [1”,直接懵逼,黑人问号???
百度翻译了一下,应该是“无效的单元格坐标”,然而我写的代码怎么可能有错,我这边都是好的。(程序员:我这里都是好的)
这两天,关注IT资讯的同学一定被铺天盖地的比特币勒索病毒软件的消息刷屏了。主要是不光老外中招,连天朝大学和医院都没能幸免。
其它我就不说了,其实这次事件,还真不是用户乱下软件导致的。而是骇客(对,不是黑客)使用已经被公布并且被修复的Windows漏洞。如果你使用的是Win10系统,并且开启了自动更新,在这次事件真的是笑看风起云涌。