<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[山水云的博客]]></title><description><![CDATA[专注于PHP相关的技术分享和交流。]]></description><link>https://blog.youkuaiyun.com/dlming614</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dlming614]]></copyright><item><title><![CDATA[php使用Yar实现RPC调用]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906968</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906968</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:16:06 +0800</pubDate><description><![CDATA[Yar轻量级、可串行也可并行、可通过get方法查看接口列表和注释，只需要把接口信息整理好，就能在查看接口的时候同时查看接口文档了。
Yar是啥
轻量级、并行php RPC框架，只支持php程序之间的相互调用。
优点：轻量级、可串行也可并行、可通过get方法查看接口列表和注释，只需要把接口信息整理好，就能在查看接口的时候同时查看接口文档了。
缺点：不支持跨语言调用。
安装
git clone htt...]]></description><category></category></item><item><title><![CDATA[php用seaslog记录日志]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906956</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906956</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:15:39 +0800</pubDate><description><![CDATA[Seaslog可以进行便捷、规范的log记录，高效的海量log分析，可配置、多途径的log预警等。
seaslog的介绍，官方文档已经讲得很清楚了，不赘述，这里主要说说php日志相关的和seaslog要注意的地方。
日志的记录和分析，大改有三个步骤：日志记录、日志收集、日志分析。
日志记录
一般可分为数据库和文件。数据库又分为mysql这种sql数据库和mongo为代表的nosql数据库。
关于采...]]></description><category></category></item><item><title><![CDATA[Mysql的索引算法和优化策略]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906944</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906944</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:15:05 +0800</pubDate><description><![CDATA[本文介绍了mysql的索引本质和mysql优化的一些细节。
索引的本质
索引的本质是一种数据结构。
数据库查询算法

顺序查找：无法适应数据量大的情况
二分查找：要求数据是有序的
二叉树查找：基于二叉树
索引：满足特定查找算法的数据结构

索引结构
B-Tree
Key-Data的存储结构。
搜索算法：先查找父节点，找到直接返回data，没找到则在子节点内进行递归查找，找到直接返回data，否则返...]]></description><category></category></item><item><title><![CDATA[部署SVN并同步web目录]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906933</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906933</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:14:35 +0800</pubDate><description><![CDATA[本文介绍了svn服务器的搭建和使用细节。
安装
apt-get install subversion
创建svn仓库
mkdir /data/svn/ssyleo
初始化svn仓库
svnadmin create /data/svn/ssyleo
配置仓库
vim /data/svn/ssyleo/conf/svnserve.conf
anon-access = none // 禁止匿名帐号
au...]]></description><category></category></item><item><title><![CDATA[php安装imagick扩展]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906914</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906914</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:13:58 +0800</pubDate><description><![CDATA[imagick相对于GD库有更好的图像处理函数支持，滤镜、模糊、旋转的处理效率比GD高很多，对于GIF的处理也更得心应手，imagick还支持3D图像效果。
imagick相对于GD库有更好的图像处理函数支持，滤镜、模糊、旋转的处理效率比GD高很多，对于GIF的处理也更得心应手，imagick还支持3D图像效果。
环境要求

php &gt; 5.4.0 &amp; ImageMagick &gt...]]></description><category></category></item><item><title><![CDATA[ffmpeg常用命令介绍]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906904</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906904</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:13:28 +0800</pubDate><description><![CDATA[ffmpeg是一个多媒体处理软件，暴风影音、格式工厂等多种播放器和格式转换工具内核都是ffmpeg。
ffmpeg是一个非常快的视频/音频转换器，其也可以现场抓取音频/视频源，并在任意采样率、尺寸之间调整视频，以及提供多种高品质的滤镜系统,可运行在Windows、mac、linux平台。
下载安装
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg...]]></description><category></category></item><item><title><![CDATA[memcache失效导致db crash的解决方案]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906887</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906887</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:12:56 +0800</pubDate><description><![CDATA[在高并发下，很容易出现memcache失效导致短时间内造成大量的DB IO，如果语句耗时少大，极有可能导致数据库崩溃，严重影响业务。
最近实现一个搜索功能，需要统计热搜词。设计思路是将用户搜索词入库，然后用sql统计出搜索频次高的词，经过敏感词过滤后得到最终的热词。后面统计闲时一分钟大概有200多次搜索，一天下来搜索量也不少，日积月累数据库会非常大，所以后来又写了定时清理旧数据的脚本。
在统计热词...]]></description><category></category></item><item><title><![CDATA[beanstalk队列服务for php]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906871</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906871</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:12:16 +0800</pubDate><description><![CDATA[beakspeak是一个基于beakstalk队列服务的php-c扩展，高性能支持分布式内存队列服务，且很轻量级。
目前国内还没有比较详细的关于Beanspeak的中文说明，本文是根据源码提炼、整理的一份中文文档。
Beanstalk特性

高性能，内存操作
持久化，通过binlog来记录和恢复job状态
优先级，支持0-2**32优先级，默认1024
精确的超时控制

至于Beanstalk的安...]]></description><category></category></item><item><title><![CDATA[php使用thrift做服务端开发]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906853</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906853</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:11:39 +0800</pubDate><description><![CDATA[thrift采用接口描述语言定义和创建服务，用二进制格式传输数据，体积更小、效率更高，对于高并发、数据量大和多语言的环境有更好的支持。
Apache Thrift是啥？
Apache Thrift是FaceBook开发的一套可扩展的、跨语言的服务调用框架。简单的说就是先定义一个配置文件，不同的语言可以利用thrift基于这个配置文件生成各自语言的服务端，不管客户端用什么语言，都可以调用，也就是说基...]]></description><category></category></item><item><title><![CDATA[如何根据用户信用值估算其内容价值？]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/100906752</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/100906752</guid><author>dlming614</author><pubDate>Tue, 17 Sep 2019 00:10:56 +0800</pubDate><description><![CDATA[对于社区类应用来说，内容是否优质大概可从两个维度划分，一是时效性，二是权重。刚刚发生的大事一定是最受关注的，比如最新爆料。
有价值内容如何甄别
内容型社区业务中一般都会有热门文章这个分类，比如新浪微博的热门微博，网易新闻的头条等等。从海量用户生产的海量内容中，甄选出少数相对有价值的信息提供内容消费，对于保障用户阅读效率和质量，维护社区氛围是非常有价值的。现在的社区更讲究人与人的关系，没有绝对的优质...]]></description><category></category></item><item><title><![CDATA[通过xml解析、合并百兆Excel大文件，消耗内存低]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/96102374</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/96102374</guid><author>dlming614</author><pubDate>Tue, 16 Jul 2019 09:37:54 +0800</pubDate><description><![CDATA[/*
     * 通过xml解析Excel，合并文件
     * 支持大文件合并，经测试共计100m的三个文件合并需要7分钟，12m内存
     * 要求：所有被合并的Excel header结构必须一致
     */
    public static function combineXlsx($source_xlsx_files, $dest_xlsx_file_name)
    {...]]></description><category></category></item><item><title><![CDATA[PHP解析csv文件]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/88197073</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/88197073</guid><author>dlming614</author><pubDate>Tue, 05 Mar 2019 19:06:00 +0800</pubDate><description><![CDATA[php自带有csv解析函数str_getcsv
&amp;lt;?php 
$Data = str_getcsv($CsvString, &quot;\n&quot;); //parse the rows 
foreach($Data as &amp;amp;$Row) $Row = str_getcsv($Row, &quot;,&quot;); //parse the items in rows 
?&amp;gt; 


]]></description><category></category></item><item><title><![CDATA[Google Play Apk Downloader]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/52484750</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/52484750</guid><author>dlming614</author><pubDate>Fri, 09 Sep 2016 10:25:19 +0800</pubDate><description><![CDATA[自家开发了个应用，放到Google Play 的应用市场上，想从商店直接下载到本地安装，网上找了个网站提供这种功能，基于这个网站自己写了个程序自动提取apk包。$id = 'com.duowan.owbox';
$apkName = 'Overanalyze for Overwatch';
$url = "https://apkpure.com/{$apkName}/{$id}/download?f]]></description><category></category></item><item><title><![CDATA[如何不让一个慢查询把服务器搞冒烟]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/52384757</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/52384757</guid><author>dlming614</author><pubDate>Wed, 31 Aug 2016 14:39:10 +0800</pubDate><description><![CDATA[手机API接口如何抗住高并发前段时间项目迎来七夕高峰，有一个接口的SQL本来长这样：mysql> explain SELECT *,sum(num) AS sum FROM bi_search WHERE search_time >= '2016-08-30' AND type = 0 AND state = 1 GROUP BY keyword ORDER BY sum DESC LIMIT 50]]></description><category></category></item><item><title><![CDATA[PHP在Windows环境下安装Imagick扩展]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/51463595</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/51463595</guid><author>dlming614</author><pubDate>Fri, 20 May 2016 17:50:44 +0800</pubDate><description><![CDATA[1、下载DLL扩展文件 
http://pecl.php.net/package/imagick2、将php_imagick.dll文件放在php的ext扩展目录中 
注意：具体的ext扩展目录不一定，要从phpinfo()里面看3、在php.ini里加载扩展 
extension=php_imagick.dll 
注意：php.ini的位置同样要在phpinfo()里面看4、将第一步里的所有dll]]></description><category></category></item><item><title><![CDATA[PHP里还有这些好用的技巧]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/51320204</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/51320204</guid><author>dlming614</author><pubDate>Thu, 05 May 2016 09:34:51 +0800</pubDate><description><![CDATA[array_count_values计算一维数组中所有值出现的个数$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));输出：Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)]]></description><category></category></item><item><title><![CDATA[Js获取浏览器类型]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/50622401</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/50622401</guid><author>dlming614</author><pubDate>Tue, 02 Feb 2016 10:14:45 +0800</pubDate><description><![CDATA[<script>
    function myBrowser(){
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isOpera = userAgent.indexOf("Opera") > -1;
        //判断是否Opera浏览器
        if (isOpera) {]]></description><category></category></item><item><title><![CDATA[将秒数转化为时分秒]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/50508977</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/50508977</guid><author>dlming614</author><pubDate>Wed, 13 Jan 2016 10:40:16 +0800</pubDate><description><![CDATA[$rst = '';
$s = time() - strtotime('2016-01-12 09:28:00');
$day = intval($s/86400);
$remain = $s%86400;
$hour = intval($remain/3600);
$remain = $remain%3600;
$minute = intval($remain/60);
$second = $re]]></description><category></category></item><item><title><![CDATA[一个最简单的try catch]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/49931807</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/49931807</guid><author>dlming614</author><pubDate>Thu, 19 Nov 2015 18:28:54 +0800</pubDate><description><![CDATA[PHP中必须先手动抛出异常，然后才能捕获异常（因为PHP是后来才加入异常的，而之前的很多基础类库并没有做抛出异常异常，所以需要手动抛出）。function test($a){
    if($a<5){
        throw new Exception('error ...........');
    }
}try {
    test(3);
} catch(Exception $e) {]]></description><category></category></item><item><title><![CDATA[一个最简单的try catch]]></title><link>https://blog.youkuaiyun.com/dlming614/article/details/49931783</link><guid>https://blog.youkuaiyun.com/dlming614/article/details/49931783</guid><author>dlming614</author><pubDate>Thu, 19 Nov 2015 18:27:41 +0800</pubDate><description><![CDATA[PHP中必须先手动抛出异常，然后才能捕获异常（因为PHP是后来才加入异常的，而之前的很多基础类库并没有做抛出异常异常，所以需要手动抛出）。function test($a){
    if($a<5){
        throw new Exception('error ...........');
    }
}try {
    test(3);
} catch(Exception $e) {]]></description><category></category></item></channel></rss>