历时4个月,ApiAgent终于自豪的发布了1.0版本。
ApiAgent是一个使用PHP开发的API接口代理程序,支持跨域接口代理和接口合并请求功能。ApiAgent不光是一个接口代理项目,也可以作为类库使用。
历时4个月,ApiAgent终于自豪的发布了1.0版本。
ApiAgent是一个使用PHP开发的API接口代理程序,支持跨域接口代理和接口合并请求功能。ApiAgent不光是一个接口代理项目,也可以作为类库使用。
自从上次发布更新新闻后,已经过去整整4个月,这期间虽然没有发布更新新闻,但是YurunHttp一直在不断更新完善。
下面就列一下这4个月的改进吧!
说到今天遇到的这个坑,就得说说我开源的YurunHttp类库了。curl请求后,获取header和body,我是通过获取CURLINFO_HEADER_SIZE来进行字符串截取。截取当然用substr,于是截取body时候遇到了问题。
前两天有段代码报错了,提示信息是PHP Static function xxx should not be abstract。
百度后得知PHP5.2以后不允许abstract和static同时使用在方法上。
我们可以把基类中的static abstract方法,写在接口中,让类使用接口。
宇润开源的PHP事件类,支持全局事件和类中事件,也就是专业的说是观察者模式。
今天遇到过怪事,同样的代码,在cli模式下运行一切正常,到网页里就直接显示500错误。php的错误捕获和内置错误日志都没有记录,查看了apache的日志有一条错误。
几天前,写了个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 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。
上周五同事反应说使用Yurun\Until\HttpRequest的时候,new一下时间特别长。国际惯例,在别的机子肯定都没问题。。。
百思不得其解之下,调试每句话,最后发现是构造方法里的这一句代码出现了问题:
$this->cookieFileName = tempnam(null === self::$tempDir ? sys_get_temp_dir() : self::$tempDir,'');
代码本身并没有错,sys_get_temp_dir()函数调用时间正常,后来发现tempnam()调用时间特别久……
我在开发一个接口时候,返回数据20多MB,这时候第一第二种出现了内存溢出问题。后来改用第三种,问题解决。