PHP程序员技术精粹
文章平均质量分 55
php程序员设计项目中,一些经典的代码技巧,PHP优秀项目分析,以及一些设计规范。
CleverCode
这个作者很懒,什么都没留下…
展开
-
phpunit单元测试filter功能
1 phpunit官方文档http://www.phpunit.cn/manual/4.8/zh_cn/installation.htmlfilter功能我们在对一个系统进行写单元测试的时候,可能只有几个,运行单元测试可能会比较快。当系统达到几百个,上千个接口的时候,如果这时候需要新增加接口。不用每次都执行所有的用例。可以使用fiter功能。1 在test文件夹中,建立ZhouEr...原创 2018-05-13 10:27:06 · 2254 阅读 · 0 评论 -
phpunit代码覆盖功能coverage
1 phpunit中coveragephpunit中coverage能够很方便的帮助我们查看自己代码覆盖的情况。Code Coverage Options:–coverage-clover Generate code coverage report in Clover XML format. –coverage-crap4j Generate code coverage ...原创 2018-05-13 11:29:07 · 2529 阅读 · 0 评论 -
PHP常见问题
1 include require include_once require_once 的 区别?处理失败方式不同: require 失败时会产生一个致命级别错误,并停止程序运行。 include 失败时只产生一个警告级别错误,程序继续运行。 include_once/require_once 和 include/require 处理错误方式一样, 唯一区别在于当所包含的文件代码已经...原创 2018-08-16 15:16:24 · 779 阅读 · 0 评论 -
libevent源码分析
1 libevent简介libevent是一个事件通知库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue、IOCP等系统调用管理事件机制。著名分布式缓存软件memcached也是基于libevent,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。2 工作原理3 源码分析...原创 2018-09-23 18:33:27 · 1339 阅读 · 0 评论 -
PHP延迟静态绑定
1 self用法self是指向定义它的当前类的指针。当前类(current class)<?phpclass Person{/*{{{*/ static $name = 'i am person' ; //打印信息 public static function printInfo() { echo "[self] name:"...原创 2018-09-12 18:25:01 · 505 阅读 · 0 评论 -
模拟微信公众号回调请求
1 有时候我们需要调试线上公众号,微信公众号请求我们的接口回调之后,输出的内容到底是什么?有没有报错信息?xml是否是对的?我们可以模拟微信公众号的回调请求。代码如下。<?phpset_time_limit(0);ini_set('memory_limit', '128000M');$time = time();$xml = '<xml><ToUse...原创 2018-01-21 11:51:52 · 6741 阅读 · 1 评论 -
微信扫码自动跳转技术
扫码跳转详细方案:1扫码页面没有登录,去登录。2ajax长轮询的方式。3s请求一次服务器。(3s*100次;5分钟后,二维码遮罩)3临时二维码参数:key = userid业务类型+ x(订单id等)。4获取临时二维码失败3次,或者每天获取临时二维码次数超过8万,没有扫码页面,直接跳转到成功页,没有扫码页面。技术交流CleverCode是一名架构师,技...原创 2017-10-27 16:33:05 · 9112 阅读 · 0 评论 -
日志追踪解决bug
1 通过elk查看用户的行为。发现用户在October 14th 2017, 07:47:47.000,有一个503错误。503错误,一般为服务器负责过高,程序执行时间过长,或者慢sql。2 查找对应服务器10.3.12.27:80的error-web.log日志对应时间点发现一条超出内存的报错3 查找服务器的慢sql发现通过Anemometer查询对应时段...原创 2019-12-09 16:57:12 · 4298 阅读 · 0 评论 -
查看PHP-FPM运行状态
1PHP-FPM内置了状态页,开启后可查看PHP-FPM的详细运行状态,给PHP-FPM优化带来帮助。打开php-fpm.conf,配置php-fpm状态页选项pm.status_path = /hdfphpss/配置nginx.conf,添加可访问serverserver { listen 80; server...原创 2017-09-22 18:56:55 · 11467 阅读 · 0 评论 -
正向代理与方向代理的区别
1 正向代理 用户访问不了目标机器,需要通过代理服务器作为跳板,访问目标机器。(用户访问代理服务器,代理服务器请求目标机器,然后将请求的结果返回给用户)2 反向代理 用户访问目标机器,目标机器不做处理,从后端真正的机器上获取数据,然后返回给用户。这样可以隐藏真实的目标机器。(通常的做法可以负债均衡)技术交流CleverCode是一名架构师,技术...原创 2017-08-31 15:50:27 · 922 阅读 · 0 评论 -
日均2亿PV网站架构
技术交流CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!...原创 2017-08-29 18:07:19 · 1356 阅读 · 0 评论 -
php代码覆盖工具 -- PHPCodeCoverage
1 功能介绍PHPCodeCoverage是一个基于xdebug检测php代码覆盖的工具,它能够应用于功能测试,接口测试,单元测试等任何php代码环境。它能够通过Web页面和Cli终端两种途经展示代码覆盖的结果。2 安装原创 2017-08-27 18:40:21 · 6630 阅读 · 1 评论 -
curl常见用法
1 --s/--silent 静音模式。不输出任何东西$curl -s "http://www.baidu.com/"2-o/--output 把输出写到该文件中$curl -o /dev/null -s"http://www.baidu.com/"$curl -o baidu.txt -s "http://www.baidu.com/"3-A/-...原创 2017-08-10 15:59:43 · 1076 阅读 · 0 评论 -
github使用入门
1 安装git# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel# yum -y install git-core# git --versiongit version 1.7.12 新建一个项目3 配置全局变量。123456789@qq.com是cj58的注册邮箱...原创 2017-08-17 22:35:45 · 904 阅读 · 0 评论 -
对比svn两个不同分支目录的文件
<?php/** * 对比svn两个不同分支目录的文件 */class DiffDir{/*{{{*/ public function run($dir1,$dir2,$dirResult = '/tmp/') {/*{{{*/ $hash1 = $this->getFileInfo($dir1); ...原创 2017-07-27 17:35:40 · 7217 阅读 · 0 评论 -
账号被盗,如何强制下线?
如果是用cookie实现的登录机制,当账号被盗,多个浏览器可以使用同一个账号,如何强制下线?或者在nginx缓存页面+cookie后 串会话问题(http://blog.csdn.net/clevercode/article/details/75145258),如何强制下线?1 登录cookie机制。 在我们登录的时候,会种下cookie,cookie的信息,可以包括用户的u...原创 2017-07-16 11:22:21 · 3192 阅读 · 0 评论 -
nginx缓存页面+cookie后 串会话问题
前几天同事解决了一个非常诡异的bug,用户的对话中,出现了非自己的说的内容。他给我们分享的这个bug得产生的原因,以及解决过程,我觉得很有意义,所以总结写篇博客。1 产生bug的原因? 用户A请求 /index/index页面A1:发起/index/index请求。A2,A3:Nginx发现index/inde缓存的页面失效A4:从后端的web server中...原创 2017-07-15 10:52:25 · 4939 阅读 · 1 评论 -
程序员如何完成领导安排的模糊的任务?
有时候,领导安排的任务是模糊的,就那么几个字?其实会让你很头疼,领导究竟想干嘛?CleverCode觉得是领导想考察你,特别是你的理解能力?CleverCode觉得遇到这种情况,1 和领导要多沟通,如何实在沟通不出来,可以从侧门沟通。2 如果这个任务是安排给多个人的,可以问问其他人事怎么做的?综合其他的做法后,自己在去做,可能就是最高的标准了。3 及时把你做的东西想领导反馈,领导肯定会给你指点...原创 2017-03-12 14:56:18 · 2147 阅读 · 0 评论 -
用Exclel制作日期统计折线图与柱状图
1 选择Y轴数据列2 选择X轴数据列点击图右键。选择数据数据。点击类别点击选择x的数据源开始于结算位置完整图柱状图和折线图操作步骤基本一样,只需要选择柱状图即可。技术交流CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):51713358...原创 2017-03-08 11:34:18 · 4378 阅读 · 0 评论 -
程序员如何快速的熟悉一个系统?
程序员在进入一个新的公司或者系统的交接的时候,都需要快速的熟悉一个系统。那么熟悉一个系统怎么快速的掌握,是我们程序员应该掌握的一种技能。CleverCode认为应该分以下几步步走。1 浅入了解:点点页面,快速熟悉系统功能点。 点点这个系统的页面,大致了解这个系统的功能,知道这个系统是干什么用的。为谁服务的。在熟悉页面功能的时候,可以找产品问,可以问以前的开发,可以问测试;这个...原创 2017-03-12 14:48:06 · 5728 阅读 · 0 评论 -
程序员受表扬需要发言该怎么说?
今天看了《真正男子汉第二季》最后一集,班长王威的发言,CleverCode感触很深,感觉他很优秀,很具备做领导的潜力。一事做的漂亮;二话说的漂亮。 大多数程序员和我一样,一心想的是把代码写的漂亮,活干的漂亮;然而时间久了,和机器打交道时间久了,我们说话的能力,可以说最比较笨。程序员受表扬需要发言该怎么说?我总结了一样王威的发言,以及一些其他表彰发扬,其实只要遵循...原创 2017-01-21 17:39:58 · 3382 阅读 · 0 评论 -
svn或SmartSVN通过browser方式reveiw代码
CleverCode在以前的项目过程中,不管是reveiw自己的代码,还是reveiw新人的代码,都是先把代码check out下来,在通过svn对比查看,代码修改或新增的数据。 后台CleverCode发现其实svn或SmartSVN都自带了browser方式在线reveiw代码;不用下载到本地。这样在线reveiw代码大大节省了下载代码的时间,效率更高。一 svn通过b...原创 2017-01-19 17:40:59 · 2304 阅读 · 0 评论 -
2016年总结
看着大家12月底的时候就已经开始写年终总结了。那时候CleverCode因为项目比较忙。这里总结一下2016年的事情,列出2017年的事情。2016年总结: 1 换工作了 2016年换了一份工作,在上一家单位工作了2年,说长也不长,说短也不短。我是那种一旦提出了离职,即便加薪留人,我也不会留的。老领导知道留不住我,走的时候给我说...原创 2017-01-15 13:41:37 · 1379 阅读 · 4 评论 -
HostsEditor--修改安卓系统的Hosts
1 电脑配置。当我们配置电脑的hosts时候,是打开C:\Windows\System32\drivers\etc\hosts。然后配置。当访问m.clevercode.com。就会访问101.1.21.77的IP了;而不会走远程dns了。如下:2 同电脑原理,当我们开发安卓项目的时候,CleverCode发现,需要配置hosts,可以安装软件HostsEditor.pc6....原创 2017-01-09 09:47:43 · 12767 阅读 · 1 评论 -
软件项目开发流程
1 整体开发流程2 php技术部分技术交流CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!...原创 2016-12-12 11:27:00 · 1043 阅读 · 0 评论 -
程序员带新人的几点思考
CleverCode前几天看到一个新闻说:“这个人即懂技术,又懂管理!”。“懂管理”,这几个词一直在我脑海中回绕,CleverCode从开始工作后,就一直在专研技术。看的书籍清一色技术书籍。那时候总是认为,只要技术修炼到家了,走上管理岗位是自然的。随者时间的推移,一直在思考一个问题,“给你一个技术团队,你真的能带好吗?”。之后也刻意去看了一些管理的书籍,发现管理人和事,其实要比写...原创 2016-12-10 17:38:19 · 6426 阅读 · 4 评论 -
UML类图
1 元素2 关系技术交流CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!...原创 2016-11-20 14:14:41 · 937 阅读 · 0 评论 -
php固定红包 + 随机红包算法
1 需求CleverCode最近接到一个需求,需要写一个固定红包 + 随机红包算法。1 固定红包就是每个红包金额一样,有多少个就发多少个固定红包金额就行。2 随机红包的需求是。比如红包总金额5元,需要发10个红包。随机范围是 0.01到0.99;5元必需发完,金额需要有一定趋势的正态分布。(0.99可以任意指定,也可以是 avg * 2 - 0.01;比如avg = 5 / 10 = ...原创 2016-11-20 12:39:33 · 17300 阅读 · 20 评论 -
PHP常用函数
CleverCode总结了一下php常用函数,记忆这些函数,基本能够满足大部分的需求。(blog.csdn.net/CleverCode)1 I/O函数1.1 flush函数描述:flush();说明:函数Flush 刷新PHP 的输出缓存,它尽量将缓和存中的内容输出到用户的浏览器。返回值:无1.2 print函数描述:print(string arg,string[...原创 2016-10-15 13:05:02 · 1483 阅读 · 0 评论 -
php并发加锁
CleverCode在工作项目中,会遇到一些php并发访问去修改一个数据问题,如果这个数据不加锁,就会造成数据的错误。下面CleverCode将分析一个财务支付锁的问题。1 没有应用锁机制1.1 财务支付简化版本代码<?php/** * pay.php * * 支付没有应用锁 * * Copy right (c) 2016 http://blo...原创 2016-09-10 12:18:21 · 15506 阅读 · 3 评论 -
php通过list()函数 -- 将数组中的值赋给一些变量
CleverCode发现一个通过接收php函数返回多个值的方法。以前python里面经常用,php里面也有这个方法。<?phpfunction retInfo(){ $name = '张三'; $age = 18; $sex = 1; return array($name,$age,$sex);}list($name1,$age1...原创 2016-07-26 15:27:56 · 3424 阅读 · 0 评论 -
手机测试环境调试 -- 微信,Android,IOS开发使用Fiddler代理
CleverCode最近在做微信开发。在调试内网用手机调试微信公众号开发的时候,发现访问触屏版配置host页面非常麻烦。最好找到一个代理工具Fiddler。1 代理原理1.1 不使用代理1.2 使用代理原理2 下载Fiddlerhttp://download.csdn.net/detail/clevercode/95621223 配置Fidd...原创 2016-06-28 19:43:13 · 8203 阅读 · 1 评论 -
SwitchHosts高效切换host -- 让开发,测试,线上环境切换更容易
CleverCode在写php项目中,经常需要配置host。将某个域名指向某个ip。手动配置C:\Windows\System32\drivers\etc\hosts,非常不方便。这里分享一个可以高效切换host工具。1 下载地址http://download.csdn.net/detail/clevercode/95586752 配置方案...原创 2016-06-24 16:57:58 · 17556 阅读 · 0 评论 -
linux svn创建版本库带branches,trunk,tags
CleverCode最近在研究svn的branches,trunk,tags。这里先记录怎么创建版本库带branches,trunk,tags。1 创建testProject版本库#svnadmincreate/data0/svn/testProject配置权限1 配置svnserve.conf文件2 配置authz文件2 svn co 代码...原创 2016-06-19 17:36:13 · 8170 阅读 · 0 评论 -
curl_multi_init比curl_init快30倍
CleverCode发现curl_multi_init比curl_init发送100个请求,快非常多!具体细节如下。1 https源码<?php/* * https.php * * https请求类 http://blog.csdn.net/CleverCode * * modification history: * -------------------- ...原创 2016-05-31 19:00:50 · 5556 阅读 · 0 评论 -
linux 使用别名
1)配置个人用户的~/.bashrc$vi ~/.bashrcalias ll="ls -lhF --color=auto"alias db127="mysql -uroot -p123456 -h 127.0.0.1 -P 3306"2)立即生效(也可以重新登录)$ source ~/.bashrc3)过程说明 一般会在.bash_profile文件中显式调用.bashrc...原创 2016-05-21 16:29:52 · 11622 阅读 · 0 评论 -
PHP项目的设计过程
过程说明:1)产品部根据需求设计出原型图和需求文档。2)产品部和需求方与技术一起过一遍需求。这样可以让需求方确认需求;和所参与的技术(设计部,制作部,php,测试部等)对要设计的产品有一个大致的了解。3)设计部根据原型图设计出高效的psd图。4)制作部根据psd切图;设计出html页面和交互的弹框等前端。5)php根据原型图和需求文档设计出表结构和数据处理模型。这个过程是和设...原创 2016-03-26 12:56:51 · 3195 阅读 · 0 评论 -
在smarty中通过php脚本给smarty赋值
一,php 脚本(test.php)$smarty = new Sys_SmartyWork(CRON_HOME."/modifyInfo/tpl",CRON_HOME."/modifyInfo/tpl_c"); $hash = array();$info = array();$info ['smarty'] = 'i am smarty!';$info ['php...原创 2016-03-07 16:01:06 · 2765 阅读 · 3 评论 -
在smarty中通过php脚本获取smarty变量
一,php 脚本(test.php)$smarty = new Sys_SmartyWork(CRON_HOME."/modifyInfo/tpl",CRON_HOME."/modifyInfo/tpl_c"); $hash = array();$info = array();$info ['smarty'] = 'i am smarty!';$info ['php'] =...原创 2016-03-07 15:27:47 · 3295 阅读 · 0 评论 -
PHP数组变量重复利用的Bug
一,有问题的代码for($i = 1;$i < 3;$i++){ echo "-------${i}-----------\r\n"; $arr['cmd'] = 'insert'; $arr['i'] = $i; print_r($arr); $arr = serialize($arr);}二,有问题的代码输出...原创 2016-02-19 13:59:42 · 1642 阅读 · 0 评论