PHP过滤掉非utf8字符

开发生成XML的时候,发现里面有一些特殊字符,比如  ,在网上找到好多的过滤utf8的方法,都没有成功。只能靠自己来实现 PHP过滤非UTF8字符。

一、思想

1、先将utf8的字符替换为英文逗号。

2、通过英文逗号分隔为数组。

3、过滤出来特殊字符。

4、str_replace 查找替换特殊字符。

继续阅读

使用XHProf进行线上PHP性能追踪及分析

今天介绍下大家并不陌生的XHProf。它是Facebook开发的用来分析线上PHP性能的工具。相比较于Xdebug,占用内存和性能更低。

1.XHProf安装


# wget http://pecl.php.net/get/xhprof-0.9.4.tgz
# tar zxvf xhprof-0.9.4.tgz
# cd xhprof-0.9.4/extension/
# phpize //结合自己的环境确认phpize的目录
# ./configure --with-php-config=/usr/local/php/bin/php-config //结合自己的环境确认phpize的目录
# make
# make install

安装完成后,在php.ini中添加 extension=xhprof.so。

重启下web应用服务器。

继续阅读

使用Anemometer基于pt-query-digest将MySQL慢查询日志可视化

MySQL慢查询日志分析工具不少,比如:

1、mysqldumpslow,MySQL官方提供。

2、mysqlsla,hackmysql.com推出的一款日志分析工具。功能非常强大,数据报表,非常有利于慢查询分析,包括执行频率、数据量和查询消耗等。

虽然都可以满足日常的使用,但是不够直观,并且无法方便开发人员进一步完善SQL语句。

pt-query-digest

是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

Anemometer

将MySQL慢查询log可视化。

MySQL开启慢查询日志

不同的版本,MySQL开启慢查询日志方式有点不同。可以通过


#show variables like '%slow%'

命令查看都需要配置哪些参数。以5.6版本为例,修改my.cnf的数据库配置文件


slow_query_log = ON
slow_launch_time = 2
slow_query_log_file = /自定义日志目录/mysql-slow.log
log_queries_not_using_indexes = 1 //没有使用到索引的查询也将被记录在日志中

继续阅读

GDB调试C语言的常用命令

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,Linux开发人员必备的技能之一。长时间不使用命令很容易忘记,做下记录。

GDB功能

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、动态的改变你程序的执行环境。

GDB的启动

将调试信息加入到可执行文件中。使用-g命令可以实现。如下:

 

#gcc -g pointer.c -o pointer.out

如果没有-g,将看不见程序的函数名和变量名,代替它们的全是运行时的内存地址。当用-g把调试信息加入,并成功编译目标代码以后,看看如何用gdb来调试。

继续阅读

PHP扩展开发入门教程

一直想写PHP扩展开发教程,真正要写的时候不知道从何下手,也总感觉理解不到位。先入门下手,以后再分享调用C开发的.so动态库。不得不说PHP的成功原因之一有大量可以使用的扩展。

为什么使用扩展

1、开发未支持的技术。比如想让PHP支持新的技术或者数据库等。

2、应用非常注重效率。

继续阅读