自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山水云的博客

专注于PHP相关的技术分享和交流。

  • 博客(38)
  • 收藏
  • 关注

原创 php使用Yar实现RPC调用

Yar轻量级、可串行也可并行、可通过get方法查看接口列表和注释,只需要把接口信息整理好,就能在查看接口的时候同时查看接口文档了。Yar是啥轻量级、并行php RPC框架,只支持php程序之间的相互调用。优点:轻量级、可串行也可并行、可通过get方法查看接口列表和注释,只需要把接口信息整理好,就能在查看接口的时候同时查看接口文档了。缺点:不支持跨语言调用。安装git clone htt...

2019-09-17 00:16:06 1400 1

原创 php用seaslog记录日志

Seaslog可以进行便捷、规范的log记录,高效的海量log分析,可配置、多途径的log预警等。seaslog的介绍,官方文档已经讲得很清楚了,不赘述,这里主要说说php日志相关的和seaslog要注意的地方。日志的记录和分析,大改有三个步骤:日志记录、日志收集、日志分析。日志记录一般可分为数据库和文件。数据库又分为mysql这种sql数据库和mongo为代表的nosql数据库。关于采...

2019-09-17 00:15:39 1601

原创 Mysql的索引算法和优化策略

本文介绍了mysql的索引本质和mysql优化的一些细节。索引的本质索引的本质是一种数据结构。数据库查询算法顺序查找:无法适应数据量大的情况二分查找:要求数据是有序的二叉树查找:基于二叉树索引:满足特定查找算法的数据结构索引结构B-TreeKey-Data的存储结构。搜索算法:先查找父节点,找到直接返回data,没找到则在子节点内进行递归查找,找到直接返回data,否则返...

2019-09-17 00:15:05 250

原创 部署SVN并同步web目录

本文介绍了svn服务器的搭建和使用细节。安装apt-get install subversion创建svn仓库mkdir /data/svn/ssyleo初始化svn仓库svnadmin create /data/svn/ssyleo配置仓库vim /data/svn/ssyleo/conf/svnserve.confanon-access = none // 禁止匿名帐号au...

2019-09-17 00:14:35 390

原创 php安装imagick扩展

imagick相对于GD库有更好的图像处理函数支持,滤镜、模糊、旋转的处理效率比GD高很多,对于GIF的处理也更得心应手,imagick还支持3D图像效果。imagick相对于GD库有更好的图像处理函数支持,滤镜、模糊、旋转的处理效率比GD高很多,对于GIF的处理也更得心应手,imagick还支持3D图像效果。环境要求php > 5.4.0 & ImageMagick &gt...

2019-09-17 00:13:58 3815

原创 ffmpeg常用命令介绍

ffmpeg是一个多媒体处理软件,暴风影音、格式工厂等多种播放器和格式转换工具内核都是ffmpeg。ffmpeg是一个非常快的视频/音频转换器,其也可以现场抓取音频/视频源,并在任意采样率、尺寸之间调整视频,以及提供多种高品质的滤镜系统,可运行在Windows、mac、linux平台。下载安装git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg...

2019-09-17 00:13:28 1028

原创 memcache失效导致db crash的解决方案

在高并发下,很容易出现memcache失效导致短时间内造成大量的DB IO,如果语句耗时少大,极有可能导致数据库崩溃,严重影响业务。最近实现一个搜索功能,需要统计热搜词。设计思路是将用户搜索词入库,然后用sql统计出搜索频次高的词,经过敏感词过滤后得到最终的热词。后面统计闲时一分钟大概有200多次搜索,一天下来搜索量也不少,日积月累数据库会非常大,所以后来又写了定时清理旧数据的脚本。在统计热词...

2019-09-17 00:12:56 192

原创 beanstalk队列服务for php

beakspeak是一个基于beakstalk队列服务的php-c扩展,高性能支持分布式内存队列服务,且很轻量级。目前国内还没有比较详细的关于Beanspeak的中文说明,本文是根据源码提炼、整理的一份中文文档。Beanstalk特性高性能,内存操作持久化,通过binlog来记录和恢复job状态优先级,支持0-2**32优先级,默认1024精确的超时控制至于Beanstalk的安...

2019-09-17 00:12:16 577

原创 php使用thrift做服务端开发

thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更小、效率更高,对于高并发、数据量大和多语言的环境有更好的支持。Apache Thrift是啥?Apache Thrift是FaceBook开发的一套可扩展的、跨语言的服务调用框架。简单的说就是先定义一个配置文件,不同的语言可以利用thrift基于这个配置文件生成各自语言的服务端,不管客户端用什么语言,都可以调用,也就是说基...

2019-09-17 00:11:39 1182

原创 如何根据用户信用值估算其内容价值?

对于社区类应用来说,内容是否优质大概可从两个维度划分,一是时效性,二是权重。刚刚发生的大事一定是最受关注的,比如最新爆料。有价值内容如何甄别内容型社区业务中一般都会有热门文章这个分类,比如新浪微博的热门微博,网易新闻的头条等等。从海量用户生产的海量内容中,甄选出少数相对有价值的信息提供内容消费,对于保障用户阅读效率和质量,维护社区氛围是非常有价值的。现在的社区更讲究人与人的关系,没有绝对的优质...

2019-09-17 00:10:56 249

原创 通过xml解析、合并百兆Excel大文件,消耗内存低

/* * 通过xml解析Excel,合并文件 * 支持大文件合并,经测试共计100m的三个文件合并需要7分钟,12m内存 * 要求:所有被合并的Excel header结构必须一致 */ public static function combineXlsx($source_xlsx_files, $dest_xlsx_file_name) {...

2019-07-16 09:37:54 492

原创 PHP解析csv文件

php自带有csv解析函数str_getcsv<?php $Data = str_getcsv($CsvString, "\n"); //parse the rows foreach($Data as &$Row) $Row = str_getcsv($Row, ","); //parse the items in rows ?>

2019-03-05 19:06:00 1065

原创 Google Play Apk Downloader

自家开发了个应用,放到Google Play 的应用市场上,想从商店直接下载到本地安装,网上找了个网站提供这种功能,基于这个网站自己写了个程序自动提取apk包。$id = 'com.duowan.owbox';$apkName = 'Overanalyze for Overwatch';$url = "https://apkpure.com/{$apkName}/{$id}/download?f

2016-09-09 10:25:19 2562

原创 如何不让一个慢查询把服务器搞冒烟

手机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

2016-08-31 14:39:10 527

原创 PHP在Windows环境下安装Imagick扩展

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

2016-05-20 17:50:44 622

原创 PHP里还有这些好用的技巧

array_count_values计算一维数组中所有值出现的个数$array = array(1, "hello", 1, "world", "hello");print_r(array_count_values($array));输出:Array( [1] => 2 [hello] => 2 [world] => 1)

2016-05-05 09:34:51 342

原创 Js获取浏览器类型

<script> function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器 if (isOpera) {

2016-02-02 10:14:45 572

原创 将秒数转化为时分秒

$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

2016-01-13 10:40:16 899

原创 一个最简单的try catch

PHP中必须先手动抛出异常,然后才能捕获异常(因为PHP是后来才加入异常的,而之前的很多基础类库并没有做抛出异常异常,所以需要手动抛出)。function test($a){ if($a<5){ throw new Exception('error ...........'); }}try { test(3);} catch(Exception $e) {

2015-11-19 18:28:54 314

原创 一个最简单的try catch

PHP中必须先手动抛出异常,然后才能捕获异常(因为PHP是后来才加入异常的,而之前的很多基础类库并没有做抛出异常异常,所以需要手动抛出)。function test($a){ if($a<5){ throw new Exception('error ...........'); }}try { test(3);} catch(Exception $e) {

2015-11-19 18:27:41 251

转载 php的socket通信

对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:什么是TCP/IP、UDP?Socket在哪里呢?Socket是什么呢?你会使用它们吗?什么是TCP/IP、UDP?TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集

2015-11-19 18:01:45 331

原创 色情图片识别

foreach ($posts as $k => $v) { $pics = $v->vPics->get_val(); $filename = $pics[0]->val; $arr = getimagesize($filename); list($width, $height, $type) = getimagesize($filename); switch

2015-11-18 18:04:24 4684

原创 Git常用命令

常用命令总结:初始化本地仓库: git init 生成密钥: ssh-keygen -t rsa -C “[email protected]” 验证密钥: ssh -T [email protected]创建用户: git config –global user.name “xxx” git config –global user.email “[email protected]”查看远程版本仓库连接: git rem

2015-10-12 16:34:00 451

原创 Linux实用命令

nginx日志统计1、根据url统计PV:zcat domain.access.log_20150722.gz | grep "22\/Jul.*tags\/index" | wc -lgrep后面的是匹配url的正则,wc -l是只输出行数2、根据ip统计UV:zcat domain.access.log_20150722.gz | grep "[0-9]*\.[0-9]*\.[0-9]*\.[0

2015-10-12 16:27:34 363

原创 Mysql统计技巧:ON DUPLICATE KEY UPDATE用法

ON DUPLICATE KEY UPDATE是mysql的特殊语法,与INSERT INTO一起使用,意思就是记录存在就更新,否则就添加。用法:INSERT INTO user(userid,username,age) VALUES(1,'ssy',20) ON DUPLICATE KEY UPDATE age = age + 1;sql语句执行结果分析:假设未执行此语句前的记录是这样: us

2015-10-12 16:23:56 5322 1

原创 真正的LazyLoad按需加载

有些号称延迟加载的插件其实并没有做到按需加载,只是提前将图片下载好,按需展示。这样的话,依然是多并发,只是在浏览体验上好了那么一点。而经过我的实验,发现jquery.lazyload.js这个插件可以真正的实现按需加载,打开调试模式可以看到,默认情况下图片是不加载的,只有当滚动到底部时才发出加载图片的请求。这样不仅降低并发减少服务器压力,还可以加快页面载入速度获得良好的用户体验。 实现方法也非常简

2015-10-12 16:10:51 3479 2

原创 JS自写带描述标签云

这个版本是随机排序,原理是随机颜色、随机字号,首尾三行逐行缩进形成椭圆形构造。效果预览:HTML部分:<div id="tagCloud" style="width: 400px; height: 400px; border: 1px solid #ccc; margin: 20px auto; padding: 100px; position: relative"> <span id="d

2015-10-12 15:56:05 2293

原创 JS/jQuery常用代码片段

取属性值: $(“#id”).attr(“attr”); 设置属性值: $(“#id”).attr(“attr”, “value”); 删除属性值: $(“#id”).removeAttr(“attr”); 取input值: $(“id”).val(); 设置input值: $(“id”).val(“value”); 设置某元素内的html,包括div,td等: $(“#id”).html

2015-10-12 15:49:20 504

原创 MySql常用操作命令总结

连接数据库命令: mysql -h主机地址 -P端口号 -u用户名 -p密码本地: 打开DOS,进入MySql\bin,键入命令:mysql -uroot -p,回车。输入密码后键入Enter即可。推荐将Mysql\bin目录加入到系统环境变量,这样打开cmd后可直接输入mysql命令。远程:mysql -h1.1.1.1 -P3306 -uroot -p123退出数据库: exit修改用户密码命令

2015-10-12 15:40:49 513

原创 ThinkPHP中RBAC类_ACCESS_LIST显示为空的解决方法

使用ThinkPHP框架中的RBAC类验证用户权限时,调用saveAccessList方法会输出一个数组,_ACCESS_LIST显示的是该用户的所属权限,如果为空则表示没有权限。原因分析:终极原因就是think_access数据表中只保存了方法级别的角色——节点对应信息,而没有保存控制器——节点和应用——节点的数据。解决方法:1、分配子级权限时记得勾选父级节点。2、分配时不必勾选,在PHP后端处理

2015-10-12 15:27:12 1344

原创 ThinkPHP多语言功能设置方法

注:本方法适用于3.2.2版本。第一步,在AplicationCommonConf文件夹下创建tags.php文件,输入以下代码:return array( 'app_begin' => array('BehaviorCheckLang'), // 执行多语言检测行为);第二步,在AplicationCommonConfconfig.php中开启语言包功能,并配置相关参数:return a

2015-10-12 15:24:47 1884

原创 ThinkPHP上传根目录不存在!请尝试手动创建:./Uploads/

今天在用ThinkPHP做图片上传的时候碰到”上传根目录不存在!请尝试手动创建:./Uploads/”的错误提示,原因是TP的Upload类默认上传配置里rootPath的默认值是’./Uploads/’,而官方文档上的例子里并没有说明这一点,导致很多人仿照官方例子,只配置了savePath而没有初始化rootPath。Upload类默认上传配置如图:解决方法: 实例化Upload上传类时同时初始

2015-10-12 14:52:04 5610

原创 Ajax无刷新上传文件跨域问题解决办法

我的需求是这样的:A和B是两个不同域的服务器,A要调用B的接口将文件上传到B端,B端返回一串JSON,A端要拿到返回值进行处理。首先说Ajax无刷新实现文件上传,网上有很多插件,比较好用的有uploadify(flash),jquery.upload(iframe)等。jquery.upload借助iframe,在iframe里创建表单submit,上传完成后移除iframe,这样只在框架里刷新,表

2015-10-12 14:42:02 1744

原创 PHP之CURL模块上传文件

CURL很强大,可以抓取网页,可以模拟登录,还可以上传下载文件。CURL上传文件的好处之一就是可以配合AJAX实现后端文件传输,既可以避免上传文件导致的页面刷新,又可以很好的解决JS跨域等其他问题。前台页面用表单提交或者AJAX提交都可以,具体看需求,但后端都会接到一个文件信息数组,类似于这样:Array( [0] => Array ( [name]

2015-10-12 14:39:29 766

原创 PHP获取MP3时长类

最近写个上传MP3的功能,为了方便运营的同学操作,需要上传完MP3后自动获取音乐时长,然后自动插入到input里,关于MP3获取时长的类有好几个,试过之后决定采用下面这种方法。// 调用方法:$mp3 = new MP3File($filename);$a = $mp3->getDurationEstimate();$b = $mp3->getDuration();$duration = $

2015-10-12 14:30:24 7454 3

原创 PHP递归实现无限极分类

实现无限极分类的放哪广发有很多,这里介绍的是递归方法。准备测试数组:$cates = array( array( 'id' => 1, 'pid' => 0, 'title' => 'php' ), array( 'id' => 2, 'pid' => 0,

2015-10-12 14:27:05 473

原创 PHP文件缓存类

最近项目数据库的量越来越大,直接查DB的方式已经不能满足需求了,现成的缓存工具有memcached、redis,不过今天自己写了个文件缓存类,寥寥几行代码就能满足需求。代码如下:Class FileCache{ Public function cache($filename, $expire, $table, $sql){ // 有缓存就用,没有就创建 if

2015-10-12 14:23:22 383

原创 PHP常用代码片段

整理一份代码片段列表,涵盖了大部分经常用到的函数,都是近期在实际工作中用到的,做个记录。

2015-10-12 12:32:53 530

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除