PHP
文章平均质量分 63
徐汉彬-技术
原腾讯研发团队Leader,T3-3级工程师,曾负责QQ会员、鹅漫U品、AMS活动运动平台平台(高峰期日请求13亿)和腾讯信息流商业化推荐系统等项目的架构和研发工作。
展开
-
日请求亿级的QQ会员AMS平台PHP7升级实践
注:这里所提到的IE是指的“IE7及以下版本的”。你有没有遇到过定义为block的a的范围在IE7及以下版本中是没办法点击的,即点击范围是0?你所设置的a样式是不是这样:1. 绝对定位;2. 内容为空。还有另外一种情况是,你设置的a为block,并且设定了height和width,但实际上,有可点击的地方,但是可点击范围却不是你预想的,即范围是小于这个height和width。那你所设置的a样式是原创 2017-03-16 22:25:21 · 359 阅读 · 0 评论 -
PHP的gd库(图像生成和处理)的应用
检测gd库的版本print_r(gd_info());([GD Version] => bundled (2.0.34 compatible)[FreeType Support] => 1[FreeType Linkage] => with freetype[T1Lib Support] =>[GIF Read Support] => 1[GIF Create Support] => 1[JPEG原创 2017-03-16 22:24:51 · 1318 阅读 · 0 评论 -
Linux下编写PHP拓展的方法
1. 生成拓展进入源代码包的ext目录:php-5.2.17/ext./ext_skel --extname=world(例如,我们编写一个world名字的拓展)修改config.m4 vi ext/world/config.m4编译的时候,选择的模式(文件中的dnl表示注释的意思,去掉dnl和最后的那个括号,否则编译会报错的)dnl [ --with-world In原创 2017-03-16 22:24:54 · 756 阅读 · 0 评论 -
PHP的语言结构和函数的区别
相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等。例子: if ( isset($user) ) { //do some thing }原因是isset是语言结构,而strlen是一个函数。那什么是语言结构呢?它和函数有什么不同吗? 1、 什么是语言结构和函数语原创 2017-03-16 22:25:00 · 441 阅读 · 0 评论 -
PHP的类对象的赋值和clone的区别
1. 类对象的赋值方式PHP的类的赋值方式,有3种情况,一种是$a = new class()操作,创建类;一种是普通的对象赋值$a = $b; 一种取地址的赋值方式$a = &$b。那么,这三种赋值,指向的内存是否是同一块呢?好吧,我们一起来做一个实验。代码如下:class mm { public $name = 'Peter';}$a = new mm();echo $a->name,"原创 2017-03-16 22:25:03 · 5204 阅读 · 0 评论 -
PHP的date函数中\"YW\"自然周计算错误问题
今天维护的一个系统,突然有人告诉我,系统的周限制失效了。而实际上,这一块代码,我们并没有什么变动,感到很奇怪。于是去追了一下,发现周限制真的失效了。查看代码,发现Date("Ym", time())这句代码获取的week(1年终的第几周,获取的数值有问题),然后发现这周刚刚好是1年中的最后一周(2013年12月30日)。于是在官网查看了Date相关的函数来源W字符追加与PHP4.1版本。但是,这里原创 2017-03-16 22:25:39 · 2607 阅读 · 0 评论 -
PHP的zend opcache使用和配置方法
Zend Opcache 是鸟哥写的一个PHP中间字节码opcode缓存拓展,后来被纳入到官方的版本中。PHP在执行执行的过程中,会先去解析PHP代码,生成opcode,然后Zend引擎读取opcode解释并且执行。为了解决每次都重复生成opcode,因此通过这个方案来缓存opcode。Zend Opcache 是PHP 5.5+ 自带的, 大家知道目前PHP的缓存插件一般有三个:APC、eAcc原创 2017-03-16 22:25:44 · 2087 阅读 · 0 评论 -
PHP性能优化工具–xhprof
安装说明1.获取xhprof可以输入网址直接下载,或者wget#wget http://pecl.php.net/get/xhprof-0.9.4.tgz#tar zxf xhprof-0.9.4.tgz2.编译安装#./configure –with-php-config=/usr/bin/php-config#make && make install3.配置php.ini在php的配置文件后面原创 2017-03-16 22:25:50 · 433 阅读 · 0 评论 -
PHP语言的革新----PHP7和HHVM
最近在微博上看见PHP的开发者发布的微博(@Laruence),PHP7很可能在明年出来,同时会伴随着很多底层的优化。这真是一个重磅的消息!PHP的发展又将翻开新的一页了。而目前的PHP5.6 release,就是PHP5系列的最后一个版本了。可能会有人感到奇怪,为什么没有PHP6,PHP的开发者也回答了这个问题,是因为中途夭折了。而里面提到的最重要的东西,就是PHPNG(下一代官方版PHP的核心原创 2017-03-16 22:25:56 · 507 阅读 · 0 评论 -
PHP7性能全速前进(翻译)
英文原文链接:http://www.infoworld.com/article/2841561/php/php-7-moves-full-speed-ahead.html#tk.rss_infoworldtechwatch原文日期:2014年10月31日。PHP7 ,将会是PHP脚本语言的重大版本更新,同时将带来大幅的性能改进和新的特性,以及改进一些过时功能。该发布版本将会专注在性能加强,源自PH原创 2017-03-16 22:26:11 · 283 阅读 · 0 评论 -
PHP7和HHVM的性能之争介绍
本博文曾发于CSDN:【问底】徐汉彬:PHP7和HHVM的性能之争PHP语言的排名变化 根据“TIOBE编程语言排行榜”(榜单虽然统计方式有局限,但是仍然不失为一个比较好的参考),2010年PHP最高曾经在世界编程语言中排名第三。可见,PHP语言在PC互联网时代的Web领域可谓叱咤风云,擎天一柱。原创 2017-03-16 22:26:19 · 584 阅读 · 0 评论 -
PHP7标量类型声明RFC[翻译]
一、总结该RFC建议添加4种新的标量类型声明:int,float,string和bool,这些类型声明将会和PHP原来的机制保持一致的用法。RFC更推荐给每一个PHP文件,添加一句新的可选指令(declare(strict_type=1);),让同一个PHP文件内的全部函数调用和语句返回,都有一个“严格约束”的标量类型声明检查。此外,在开启严格类型约束后,调用拓展或者PHP内置函数在参数解析失原创 2017-03-16 22:26:34 · 763 阅读 · 0 评论 -
PHP接入Protocol Buffer并且实现TCP的二进制流传输
我们这边是一个PHP的Web系统,需要新接入一个业务,是通过Protocol Buffer协议通信,而且只提供了一个C++的接入例子。 对于我们的PHP系统来说,除了接入Protocol Buffer之外,还需要处理二进制流的TCP传输通信,而PHP实际上并不太擅长做这些事情。PHP版本的Protocol Buffer接入,有官方的支持实现版本。Protocol Buffer for PH...原创 2017-03-16 22:26:40 · 4053 阅读 · 1 评论 -
PHP7革新与性能优化
有幸参与2015年的PHP技术峰会(PHPCON),听了鸟哥(惠新宸)的关于PHP7的新特性和性能优化的分享,一切都令人感到激动。鸟哥是国内最权威的PHP专家,他的分享有很多非常有价值的东西,我通过整理分享的PPT和收集相关资料,整理为这篇解读性质的技术文章,希望能给做PHP开发的同学一些帮助。PHP已经走过了20年的历史,直到今天,PHP7都发布了RC版,据说,PHP7正式版应该会在2015...原创 2017-03-16 22:26:43 · 965 阅读 · 0 评论 -
PHP函数sem_get引起的“No space lelf on device”问题解决记录
1. 问题表现:接收到告警,部分接口异常。2. 问题追查:首先,机器日志中忽然出现很多的flow_lock Faild to create semaphore的错误。追查系统中的代码实现后,发现是sem_get函数引起,该函数用于根据一个key值来获取一个系统System V信号量的引用。代码位置:我单独在指定机器上执行上述语句,发现了Warning信息:No space lelf on devi原创 2017-03-16 22:26:46 · 1667 阅读 · 0 评论 -
日请求亿级的QQ会员AMS平台PHP7升级实践
QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统。AMS是一个主要采用PHP语言实现的活动运营平台, CGI日请求3亿左右,高峰期达到8亿。然而,在之前比较长的一段时间里,我们都采用了比较老旧的基础软件版本,就是PHP5.2+Apache2.0(2008年的技术)。尤其从去年开始,随着AMS业务随着QQ会员增值业务的快速增长,性能压力日益变大。...原创 2017-03-16 22:27:01 · 1609 阅读 · 0 评论 -
安装redis和phpredis模块
转:http://my.oschina.net/zhaocx/blog/14133 安装redisshell> wget 对应的redis版本(目前是2.4了,内存占用率比2.3减少30%)shell> tar zxvf redis.tar.gzshell> mv redis redisshell> cd redisshell> makeshell> redis-server 不要关shell>原创 2017-03-16 22:24:19 · 244 阅读 · 0 评论 -
PHP配置文件的说明(2)
;;;;;;;;;;;;;;;;;;; ; 模块设定 ; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; [Syslog] define_syslog_variables = Off ; 是否定义各种的系统日志变量 ; 如:LOG_PID, LOG_CRON, 等等。 ; 关掉它是个提高效率的好主意。 ; 运行时,你可以调用函数define_syslo原创 2017-03-16 22:24:08 · 503 阅读 · 0 评论 -
FleaPHP和ThinkPHP(比较)
由于要做一系列的程序,需要一个良好的框架。于是一致扩充完善自己的小框架。最后快完成的时候放弃了。实际上,最好的方法是选择现成的框架。这样有了什么新技术或者新方法有人替你更新了。而且自己的新方法还可以直接作为扩展来添加进去。但是缺点是市面上的框架是面向各种用户的,所以速度上当然没有我们自己写的小框架快了。我自己写的MVC框架实现hello word只需0.000232934951782秒。 对于使用原创 2017-03-16 22:20:17 · 879 阅读 · 0 评论 -
HTTP 错误
HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。 请与 Web 服务器的管理员联系,以确认您是否具有访问所请求资源的权限。 401.2 未授权:服务器的配置导致登录失败 此错误表明传输给服务器的证书与登录服务器所需的原创 2017-03-16 22:20:32 · 208 阅读 · 0 评论 -
socket原理【转载】
Socket协议的形象描述 socket的英文原义是“孔”或“插座”。在这里作为4BDS UNIX的进程通信机制,取后一种意思。socket非常类似于电话插座。以一个国家级电话网为例。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket原创 2017-03-16 22:20:35 · 308 阅读 · 0 评论 -
Thinkphp上传文件失败原因--Public目录限制
Thinkphp框架的文件目录是自动生成的,并且为了防止影响,一般是固定的。同时,在一些文件的访问权限方面做了一些设置,例如Public文件夹是所有都可以访问的,而其他不一定可以直接访问。例如:$upload->savePath = 'root/address/uploadFiles/';这一句话会导致提示文件上传成功,也可以成功插入数据库中,但是在这个目录下,文件并没有被复制进去。发生这个问题的原创 2017-03-16 22:21:04 · 6879 阅读 · 1 评论 -
PHP 内存回收机制(GC)【转载】
每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁;防止程序执行内存溢出。 一、PHP 垃圾回收机制(Garbage Collector 简称GC) 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。 当一个PHP线程原创 2017-03-16 22:21:22 · 429 阅读 · 0 评论 -
PHP的双向队列
双向队列(双端队列)就像是一个队列,但是你可以在任何一端添加或移除元素。双端队列(deque)是由一些项的表组成 的数据结构,对该数据结构可以进行下列操作: push(D,X) 将项X 插入到双端队列D的前端 pop(D) 从双端队列D中删除前端项并将其返回 inject(D,X) 将项X插入到双端队列D的尾端 eject(D) 从双端队列D中删除尾端项并将其返回 一个使用Php数组函数实现该功能原创 2017-03-16 22:21:25 · 432 阅读 · 0 评论 -
PHP实现中文字串截取无乱码
在PHP中需要对字符串进行截取,如果没有装mb扩展(mb_substr函数),对中文截取就需要进行相应的处理。下面是对字符串 “世s界s的功s\\\夫萨的mn是非得失sdf dsf dsf 达” 截取10个字符,最后的输出是“世s界s的”,编码均为utf8:$ss = '世s界s的功s\\\夫萨的mn是非得失sdf dsf dsf 达';$aa = CHsubstr($ss, 0, 10);ech原创 2017-03-16 22:21:28 · 256 阅读 · 0 评论 -
LAMP架构
LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,L原创 2017-03-16 22:21:31 · 480 阅读 · 0 评论 -
php保存远程图片到本地
php读远程图片header('Content-Type:image/jpg'); echo file_get_contents("http://www.baidu.com/img/baidu_logo.gif"); ?> PHP保存远程图片到本地方法一:print_r stream_get_wrappers();查看是否wrapper http,若包含http,则:copy("");即可。方法二原创 2017-03-16 22:21:42 · 1388 阅读 · 0 评论 -
php类的Iterator模式
这就要讲到PHP的内置接口Iterator了,PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并实现了Iterator接口,那么你的这个类对象就是ZEND_ITER_OBJECT,否则就是 ZEND_ITER_PLAIN_OBJECT.对于ZEND_ITER_PLAIN_OBJECT的类,foreach会通过HASH_OF获取该对象的默认属性数组,然后对该数组进原创 2017-03-16 22:21:45 · 298 阅读 · 0 评论 -
php的多态实现(转)
多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。 多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。 在面向对象的软件开发中,多态性是最为重要的部分之一。面向对象编程并不只是将相关的方法与数据简单的结合起来,而是采用面向对象编程中的各种要素将现实生活中的各种情况清晰的描述原创 2017-03-16 22:21:53 · 253 阅读 · 0 评论 -
PHP程序编写规则
PHP命名规则 1 普通变量命名 采用驼峰方式。首字母小写,然后后面的字母按照大小写间隔的方式加以区分。 如果有单词缩写,则采用大写形式。如:SQL 。同时应该避免大写的单词在一起,比如IMGFile,无法直接判断单词的分割,则应该写成imgFile。2 函数命名采用动词加名词的形式,动词小写,后面的名词用大小写间隔。如果需要,可以增加小写的前缀,这时动词则大写开始。比如:没有前缀的情况:ge原创 2017-03-16 22:21:56 · 292 阅读 · 0 评论 -
Linux下php环境配置
在Linux下安装PHP环境的时候,需要打下列命令。php的tar.gz包的下载地址http://www.php.net/downloads.php./configure make make install./configure是用来检测你的安装平台的目标特征的,是一个shell脚本。make是用来编译的,它从Makefile中读取指令,然后编译。make install是用来安装的,它也从Mak原创 2017-03-16 22:22:47 · 227 阅读 · 0 评论 -
php调用shell
由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面。于是PHP的设计者们给PHP加了一个门:安全模式。如果运行在安全模式下,那么PHP脚本中将受到如下四个方面的限制: 执行外部命令在打开文件时有些限制连接MySQL数据库基于HTTP的认证在安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_原创 2017-03-16 22:23:53 · 334 阅读 · 0 评论 -
PHP配置文件的说明(1)
/etc/php.ini(Linux下,php的配置文件的目录),也可以通过whereis php等信息来查看。; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的* - foo=bar 不同于 FOO = bar。 ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量原创 2017-03-16 22:24:05 · 749 阅读 · 0 评论 -
php框架的弊端
框架的弊端——执行速度的下降。 目前主流的框架Zend Framework、Cakephp等都采用了MVC模式,同时实现了URL的路由分配。比如说http://www.xxx.com/user /login就会映射到userController对象中的loginAction方法,http://www.xxx.com/user /register对应为userC原创 2017-03-16 22:19:57 · 948 阅读 · 0 评论