你好创造者

归档:DIY PHP

从一串字符中取出唯一的数值

  上周在实习中,我得到了一个任务,而这个任务需要解析数据同时文件中的只存在时间,而无日期,日期则被保存在文件名中,例如:server20141210,于是我想到了intval(),但是经过实验发现,输出0。

  这让人很纳闷,intval()函数不是从字符串中取出数值吗?于是翻看PHP官方文档,在Return Values中看到:Strings will most likely return 0 although this depends on the leftmost characters of the string,这告诉字符串中必须左边第一个字符为数值才能被转换为整型数,因此达不到我需要的目的。

阅读剩余部分......

PHP真正多线程的使用【转】

  转自:http://zyan.cc/pthreads/
  PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。

  我之前的文章中说过,大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于MySQL数据库。如果用 MySQL 数据库,一条联合查询的SQL,也许就可以处理完业务逻辑,但是,遇到大量并发请求,就歇菜了。如果用 NoSQL 数据库,也许需要十次查询,才能处理完同样地业务逻辑,但每次查询都比 MySQL 要快,十次循环NoSQL查询也许比一次MySQL联合查询更快,应对几万次/秒的查询完全没问题。如果加上PHP多线程,通过十个线程同时查询NoSQL,返回结果汇总输出,速度就要更快了。我们实际的APP产品中,调用一个通过用户喜好实时推荐商品的PHP接口,PHP需要对BigSea NoSQL数据库发起500~1000次查询,来实时算出用户的个性喜好商品数据,PHP多线程的作用非常明显。

阅读剩余部分......

json_decode()解析失败,我的解决方案

  在PHP中,对json数据的解析要求十分的严格,我遇到过因为文件BOM头的原因导致解析失败,而如今因为\t导致解析失败。因此查询百度分析出了这次是因为\t的原因。在此我罗列下json数据解析的要求:

回送内容必须使用UTF-8编码
文件不能包含BOM头,有不少开发工具都会加上BOM头
不能存在\r\t等一些隐藏的不可见的字符
至于单引号,双引号的问题,最好使用双引号

阅读剩余部分......

PHP数据类型转换(转)

  PHP数据类型转换

  PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:

•(int)、(integer):转换成整形
•(float)、(double)、(real):转换成浮点型
•(string):转换成字符串
•(bool)、(boolean):转换成布尔类型
•(array):转换成数组
•(object):转换成对象
PHP数据类型有三种转换方式:

阅读剩余部分......

加强的DataSplit工具类

  很不幸的,上一篇中的工具类的splitTable在遇到有多个table的时候就GG了,根据需求,遇到多个的时候一般都是需要特定的table,这时,各table间id或者class等会不同,因此考虑到增加参数,使得splitTable方法更具有灵活性,于是诞生如下splitTable,其他方法均不变,可参考上一篇。

阅读剩余部分......