首页 » 编程语言 » PHP ( 第 4 页 )

php内核探索之zend_execute的具体执行过程

 

解释器引擎最终执行op的函数是zend_execute,实际上zend_execute是一个函数指针,在引擎初始化的时候zend_execute默认指向了execute,这个execute定义在{PHPSRC}/Zend/zend_vm_execute.h: ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { zend_execute_data *execute_data; zend_bool nest ...

php中如何设置mysql查询读取数据的超时时间

 

现象: php能通过代理正常连接到mysql。但是,执行query后,一直等待,没有任何数据返回。 结果导致php-fpm进程全部阻塞在读取数据的地方。不能处理其他正常请求。 解决方法: 可以通过设置mysql查杀的超时时间来解决这个问题。 第一种设置mysql查询超时时间的方法是使用mysqlnd。 关于msyqlnd的介绍,大家可以看下这篇 ...

PHP MysqlND 简介

 

简介: mysql native driver 作为php的扩展,取代了libmysqlclient ,为php在 mysql ,mysqli pdomysql 上 提供mysql 的支持。 安装: ./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd ./configure —enable-mysqlnd 优点: 1、mysqlnd更容易编译; 因为它是php源码树的一个组成部分 2 ...

小心,apc可能导致php-fpm罢工!

 

最近访问网站,发现出现了502错误。一般出现502错误,都是php-fpm 进程处理请求时出现异常导致的。 首先,查看了php-fpm 的进程数。发现php-fpm的进程数已经到达了php-fpm.conf中设置的最大值。最近流量没有大的变动,这么多php-fpm进程,肯定有问题。 ​然后,用pstack命令查看这些php-fpm进程都在干啥。 ​[hailong.x ...

善用php-fpm的慢执行日志slow log,分析php性能问题

 

众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题。作为mysql的好搭档,php也有这样的功能。如果你使用php-fpm来管理php的话,你可以通过如下选项开启。 PHP 5.3.3 之前设置如下: <value name="request_slowlog_timeout">5s</value> <value name="slowlog">log ...

安装tclip的php扩展

 

Tclip是一个智能图片裁剪程序。目前已经开源,由我维护。 Tclip的定位是智能图片裁剪,即裁剪后的图片会把图片中的重要区域保留。详细说明,请看日志《tclip人脸识别图片裁剪》。演示地址:http://demo.bo56.com Tclip提供了php扩展方式使用。具体安装过程分为两步。第一步是安装opencv2。第二步是安装php扩展。 安装过 ...

注意!PHP memcached扩展默认配置下无法自动failover

 

最近项目中用到PHP连接Memcache的场景。这个场景对于PHP开发者很常见。但就是这么常见的一个场景,带来了意想不到的一个问题。 我这边的php memcached扩展版本是: memcached MEMCACHED SUPPORT ENABLED Version 2.1.0 libmemcached version 1.0.8 Session support yes igbinary support ...

数据库分表后,并发环境下,生成全局id生成的几种方式

 

最近一个项目由于数据量变大,需要进行数据分表。数据存储在淘宝的tddl上。分表后,原先的自增id就不能使用了。tddl对java支持很好,分表后无需考虑全局id的问题。但是这个项目使用的是php进行开发,必须自己生成全局id。以下列出几种分表方案,仅当抛砖引玉。 方法1:使用CAS(compare and swap) 其实这里并不是严格 ...

一个echo引起的进程崩溃

 

最近在编写后台程序时遇到一个问题。发现后台程序总是莫名其妙的die掉。经排查,发现罪魁祸首是一个echo。 案情重现: 1.ssh登陆服务器 2.新建一个php文件test.php,代码如下: <?php sleep(50); echo "aaa\n"; file_put_contents("/tmp/test.txt",time()); ?> 3.用以下命令执行test.php程 ...

php中assert方法的安全问题

 

php中assert本来是用于调试的,如果assert方法内的代码不为true,则给个Warning提醒。如下面的代码。 <?php assert('1==2'); ?> 执行后会有如下输出: Warning: assert(): Assertion "1==2" failed in D:\green\APMServ5.2.6\www\htdocs\phpinfo.php on line 2 有个assert_option方法可以对assert进行一些控制 ...

在php中如何使用json_decode解析gbk编码的json字符串

 

今天看到csdn的bbs上有人问如何用json_decode解析gbk编码的串。 大家都知道,json都是utf8编码的。json_encode后的字符串都是会变成"\u4fe1\u6d77\u9f99"格式。 如下面的代码: $arr = "信海龙"; echo json_encode($arr); 输出结果为:"\u4fe1\u6d77\u9f99" 如果你有一个符合json格式的gbk编码的字符串,如 ...

使用正则检测是否为utf8编码

 

以下函数用来检测字符编码是不是utf-8,是返回true,不是返回false。 function is_utf8($string) { return preg_match('%^(?: [\x09\x0A\x0D\x20-\x7E] # ASCII | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2 ...