PHP
文章平均质量分 73
水木米
一个关注互联网乐于学习积极乐观的程序员
展开
-
PHP依赖注入(DI)和控制反转(IoC)的理解
首先依赖注入和控制反转说的是同一个东西,是一种设计模式,这种设计模式用来减少程序间的耦合,鄙人学习了一下,看TP官网还没有相关的文章,就写下这篇拙作介绍一下这种设计模式,希望能为TP社区贡献一些力量。首先先别追究这个设计模式的定义,否则你一定会被说的云里雾里,笔者就是深受其害,百度了N多文章,都是从理论角度来描述,充斥着大量的生涩词汇,要么就是java代码描述的,也生涩。不管怎么样,总算弄清楚一些了,下面就以php的角度来描述一下依赖注入这个概念。先假设我们这里有一个类,类里面需要用到数据库连接原创 2020-10-09 14:52:50 · 335 阅读 · 0 评论 -
nginx热部署升级
1、将旧nginx文件换成新的nginx二进制文件(注意备份);2、想master进程发送USR2信号;3、master进程修改pid文件名,加后缀.oldbin;4、master进程用新nginx文件后启动新master进程5、向老master进程发送WINCH信号,关闭老worker进程;6、回滚:向老master发送HUP信号,向新master发送QUIT;...原创 2020-05-13 15:13:32 · 260 阅读 · 0 评论 -
CMS仿站必备工具之ScrapBook火狐插件
CMS仿站都是将整个网页保存下来,然后去修改图片和css路径等,图片路径存在于网页代码里面这样通常是能保存下来的,但是假如图片存在CSS文件里 呢?光这样保存是不行的。除非打开CSS文件然后一个一个的找图片路径。然后去一个一个另存为下来!既费时,也费力啊!今天我给大家介绍一款火狐插件,这 款插件可以一键将所有内容保存到本地(包括CSS文件里的图片和网页代码里面的图片以及js文件)!插件名为:scr转载 2016-03-07 17:30:48 · 6080 阅读 · 0 评论 -
让我们来FirePHP
FirePHP是什么?FirePHP是一个利用Firebug console栏输出调试信息方便程序调试。这一切只需要调用几个简单的函数。他看起来是怎么个样子?1 php2 3 FB::log('Log message');4 FB::info('Info message');5 FB::warn('Warn message');6 FB::error('Err转载 2015-10-13 14:40:01 · 2174 阅读 · 0 评论 -
goaccess-nginx日志分析工具简介
提到web服务器就不得不说nginx。这款由俄罗斯人开发的小巧的web服务软件近几年来风靡大江南北;成为许多草根站长建设网站的首选。但由于历史原因,nginx日志分析工具相较于传统的apache、lighthttp等要匮乏的多。笔者今天在这里为各位介绍一个牛X的实时日志分析工具GoAccess。不仅安装简单,功能强大,并且支持nginx日志格式。实在是草根站长们手中又一犀利武器,不可不备^转载 2015-10-20 15:24:45 · 3008 阅读 · 0 评论 -
logstash快速入门
原文地址:http://logstash.net/docs/1.4.2/tutorials/getting-started-with-logstash英语水平有限,如果有错误请各位指正简介Logstash是一个接收,处理,转发日志的工具。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。怎么样听起来挺厉害的吧?在一个典型的使用场景下(ELK转载 2015-10-20 15:15:05 · 3440 阅读 · 0 评论 -
Logstash 日志管理工具
Logstash是一个开源的日志管理工具。项目地址:http://logstash.net/Logstash安装使用以下组件:LogstashElasticsearchRedisNginxKibana服务端:fqdn: dev.kanbier.lan (should be resolvable!)ip: 10.37.129.8转载 2015-10-20 15:11:08 · 4225 阅读 · 0 评论 -
小心,apc可能导致php-fpm罢工!
最近线上产品出现了502错误。一般出现502错误,都是php-fpm 进程处理请求时出现异常导致的。首先,查看了php-fpm 的进程数。发现php-fpm的进程数已经到达了php-fpm.conf中设置的最大值。最近流量没有特别的变动,这么多php-fpm进程,肯定有问题。然后,用pstack命令查看这些php-fpm进程都在干啥。[hailong.xhl@s010002转载 2015-10-19 11:06:30 · 2602 阅读 · 0 评论 -
与符号表分离程序或动态库, 如何用GDB调试
1 Debugging Information in Separate FilesGDB支持用户将程序调试信息放在一个独立的文件里,而不是和可执行程序在一个文件中,GDB可以某种方式来查找和自动加载调试信息。由于调试信息可能非常大,有时可能比可执行代码自身还要大,某些系统将其可执行程序的调试信息以单独的文件发布,在需要调试问题的时候,用户可以再安装这些文件。GDB支持两转载 2015-10-19 11:21:54 · 5830 阅读 · 0 评论 -
前端开发中的性能那点事(一)巧用xdebug
前言:在我们平时的php开发中,一个大的项目经过长时间的积累以后你会发现性能越来越慢,而性能到底消耗在了什么地方,常常是一个令人头疼的问题,function a()调用了多少次,function b()又消耗了多少时间,我们到底怎么查找是哪个蛀虫拉慢了我们的程序运行速度呢?在这里给大家介绍一款工具xdebug,相信很多人已经听说过了,希望借助这个工具我们可以起到简单分析php程序性能瓶颈的问题转载 2015-10-19 11:11:00 · 3066 阅读 · 0 评论 -
前端开发中的性能那点事(三)php的opcode缓存
前言:由php的运行机制决定,其实php在运行阶段我们也是可以进行缓存的从而提高程序运行效率,这就是我们常说的opcode缓存。1、简述php的运行机制(因为本文是写opcode缓存的所以这里只是简要概述,后边会专门写一篇揭秘php运行机制的。)a).php文件通过浏览器过来b)请求交给SAPI,随后SAPI层将控制权转给PHPc)zend_language_scanner对代转载 2015-10-19 11:08:30 · 4595 阅读 · 0 评论 -
多方位解析PHP vs Node.js之争
【编者按】PHP vs Node.js之争由来已久,前者用于动态网页开发,后者是用来编写高性能网络服务器的JavaScript工具包,到底他们如何?InfoWorld测试中心的Peter Wayner日前撰文指出两者的优势所在,不妨一看。以下为译文:这是典型好莱坞情节:分道扬镳的两位老朋友间的战斗。摩擦经常开始于一位对另一位不言而喻的领域感兴趣。这部电影的编程语言版本是Node转载 2015-01-22 15:45:25 · 1223 阅读 · 0 评论 -
undefined reference to `libiconv_open 无法编译PHP
./configure --with-mysql=/backup/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-curl --with-gd --enable-gd-native-ttf --with-apxs2=/usr/local/apache/bin/apxs --enable-sock转载 2014-02-27 15:32:40 · 1337 阅读 · 0 评论 -
MAC版 xampp 设置xdebug支持
MAC系统下,下载XAMPP 1.8.3-4 发现默认不支持xdebug,搜索了下文件,有xdebug 但再phpinfo()中没有显示相关的项。修改php.ini 配置文件 ,在安装目录的/Applications/XAMPP/xamppfiles/etc/php.inizend_extension="/Applications/XAMPP/xamppfi转载 2015-10-15 12:23:17 · 2763 阅读 · 0 评论 -
font-face跨域办法
font-face是现在比较流行的技术,可以矢量化你的图标,更改颜色方便等等。如果你想更进一步了解他,请点击这里(CSS3 icon font完全指南)今晚有网友问到font-face跨域在nginx下如何配置,印象中一淘UX有文章介绍办法,但打开文章里面相应的链接后发现没内容。搜了一下其他地方,大多数给出的都是一样的链接。所以在这里补充一下内容:原因:Firefo转载 2016-01-12 16:38:24 · 3828 阅读 · 0 评论 -
mac 常用软件
xcodeUML gliffyphp phpstormhomebrew 包管理工具命令行的用iterm2代替系统原生的(终极 Shell | MacTalk-池建强的随想录),然后切换shell为zsh,并安装oh my zshserver推荐使用nginxmysql客户端推荐用navicat(收费的,很贵),支持所有主流数据库。有个开源的叫Sequel Pro(Seq原创 2018-01-19 21:38:35 · 1278 阅读 · 0 评论 -
15个程序员需要知道的Chrome扩展
现在大多数程序员会选择谷歌Chrome浏览器作为主要的浏览器。下面我要为各位Web开发人员介绍的是15个最好的谷歌Chrome浏览器扩展。1. Web Developer支持Chrome的Web Developer扩展,允许你通过添加一个小工具栏来使用不同的工具。官方网站:https://chrome.google.com/webstore/转载 2018-01-20 11:53:47 · 8775 阅读 · 0 评论 -
10 款超级实用的Chrome 黑科技插件
总所周知,IE浏览器市场份额曾经占据了PC端半壁江山,如今谷歌推出的Chrome浏览器已经遥遥领先的登上了杠把子的位置,IE的市场份额在全球仅排行第三。毋庸置疑,Chrome浏览器已经成为了全球最受欢迎、用户量最多的浏览器,深受程序员的喜爱。国内知名浏览器没有一个不使用Chromium(Chrome的工程版或称实验版)内核进行开发,可想而知Chrome浏览器的强大,虽然国产浏览器如360、qq浏览转载 2018-01-19 17:12:49 · 36190 阅读 · 2 评论 -
PHP日志扩展SeasLog学习
文章来源于:开源中国社区http://www.oschina.net/p/seaslog附1:PECL项目主页http://pecl.php.net/package/SeasLog附2:GitHub项目主页https://github.com/Neeke/SeasLogSeasLogYet a log extension for PHP.A effective,fa转载 2017-10-30 16:57:40 · 546 阅读 · 0 评论 -
用lua扩展你的Nginx(写的非常好)
一. 概述Nginx是一个高性能,支持高并发的,轻量级的web服务器。目前,Apache依然web服务器中的老大,但是在全球前1000大的web服务器中,Nginx的份额为22.4%。Nginx采用模块化的架构,官方版本的Nginx中大部分功能都是通过模块方式提供的,比如Http模块、Mail模块等。通过开发模块扩展Nginx,可以将Nginx打造成一个全能的应用服务器,这样可以将一些功能在前转载 2017-10-27 11:19:06 · 4012 阅读 · 0 评论 -
使用Jenkins进行持续集成
上次介绍了开源项目如何利用Travis CI进行持续集成,但是如果你的项目不是开源项目,用Travis Pro就需要交钱了。如果不想交钱,可以自己搭建CI环境,利用Jenkins CI进行持续集成。首先,我们从Jenkins官方网站https://jenkins.io/下载最新的war包。虽然Jenkins提供了Windows、Linux、OS X等各种安装程序,但是,这些安装程序转载 2017-10-27 10:44:59 · 606 阅读 · 0 评论 -
Codis集群的搭建与使用
一、简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。Cod转载 2017-08-23 10:46:16 · 464 阅读 · 0 评论 -
php中使用apcu实现共享数据
apcu前身是apc,大家知道apc缓存分为系统缓存和用户缓存,他们的区别是什么呢?1、系统缓存是指PHP执行时增加缓存,减少php文件的反复检查和编译,从而达到系统加速的效果。 2、用户缓存是指,php代码中将数据写入缓存,是用户写入的数据,通过key和value的键值方式插入和读取。这种数据叫做用户缓存。php5.5以后,opcache将代替apc做为php加速的位转载 2017-08-26 10:41:33 · 2032 阅读 · 0 评论 -
PHP程序员进阶学习书籍参考指南
【初阶】(基础知识及入门)01. 《PHP与MySQL程序设计(第4版)》 http://item.jd.com/10701892.html02. 《深入浅出MySQL 数据库开发 优化与管理维护 第2版》 http://item.jd.com/11381295.html 03. 《实战Nginx:取代Apache的高性能Web服务器》 http://dwz.cn/2K1ry转载 2017-06-29 11:12:55 · 1214 阅读 · 0 评论 -
libiconv.so.2: cannot open shared object file解决办法
libiconv.so.2: cannot open shared object file执行命令的时候出现:error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory解决办法如下:1.在/etc/ld.so.conf中加一行/usr转载 2014-02-27 15:39:06 · 4736 阅读 · 1 评论 -
A/B测试:实现方法
我们先来看一个图:(注:感谢Algo提供本图。)上图展示了 A/B 测试的实现原理。从左到右,四条较粗的竖线代表了 A/B 测试中的四个关键角色:客户端(Client)、服务器(Server)、数据层(Data)、数据仓库(Data Warehouse)。从上到下代表了三种访问形式:无 A/B 测试的普通访问流程(Non AB test)、基于后端的 A/B 测试访问流程(转载 2013-12-17 15:16:50 · 1154 阅读 · 0 评论 -
ImageMagick+ PHP IMagick 图片压缩处理
当服务器遭遇高并发和大访问量时,对站点资源比如图片瘦身的需求会有所迫切。search了一下解决方案,希望可以抛砖。此blog在Amazon EC2 Instance部署测试成文。一、简介二、安装三、使用四、压缩五、资源======一、ImageMagick、IMagick简介======ImageMagick是用C语言开发图片处理程序。可转载 2012-11-09 21:04:32 · 5861 阅读 · 0 评论 -
调用 ImageMagick 的PHP函数中文文档
导读:iMagick的作者并未告诉大家可以使用那些函数以及方法,这些函数和方法都是从source文件中的定义找到。作者摸索测试。请大家在有example的代码情况下做测试,不然很难用明白。 FunctionDescription图片构造类image_handle = imagick_readimage([image file])读取图片到handle转载 2012-11-08 16:59:46 · 1358 阅读 · 0 评论 -
php Imagemagick的安装
ImageMagick 是一款很强大的图片处理软件,可以创建、编辑、压缩图片,转换图片的格式,支持的格式多达100种以上,包括 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF. 可以调整大小、颜色、分辨率,添加各种动态效果,或者在图片上添加文字、线条、标记等。它可以作为一种单独的软件使用,在Lin转载 2012-11-08 16:58:22 · 1074 阅读 · 0 评论 -
ImageMagick
简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存转载 2012-09-24 20:48:59 · 1882 阅读 · 0 评论 -
用PHPEXCEL类库导出EXCEL表格
<br />PHPEXCEL 类库,功能强大,支持win Excel2003 ,Win Excel2007.<br />http://www.codeplex.com/PHPExcel<br /><?php<br />ini_set("display_errors",1);//是否显示报错信息<br />ini_set('include_path', ini_get('include_path').';D://PHP//PHPExcel 1.6.6//Tests//classes//');//设置此页面包含原创 2010-08-30 16:50:00 · 1059 阅读 · 0 评论 -
PHP:IP转换整形(ip2long)
<br />如何将四个字段以点分开的IP网络址协议地址转换成整数呢?PHP里有这么一个函数ip2long.比如 <br /><?php <br />echo ip2long("10.2.1.3"); <br />?> <br />我们将得到 <br />167903491 <br /><br />这是如何计算的,目前我知道有两个算法。其一 <br /><?php <br />function ip2int($ip){ <br /> //我们先把ip分为四段,$ip1,$ip2,$ip3,$ip4 <br转载 2010-08-30 16:19:00 · 851 阅读 · 0 评论 -
一些被忽视的 PHP 函数
sys_getloadavg()<br />这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。<?php$load = sys_getloadavg();if ($load[0] > 80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again la转载 2010-08-30 18:17:00 · 630 阅读 · 0 评论 -
可伸缩高性能互联网架构揭密
<br />时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深。下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用。 一 应用无状态(淘宝session框架) 俗话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理。为什么这么说呢?咱们试想一下,假如我们在session中保存了大量与客户端的状态信 息的话,那么当保存状态信息的server宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问题,而通常 所说的集群,转载 2010-08-30 18:14:00 · 1184 阅读 · 1 评论 -
PHP导出MySQL数据到Excel文件
<br />经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。<br /><?php // 输出Excel文件头,可把user.csv换成你要的文件名 header('Content-Type: application/vnd.ms-excel'); header('Content-Dispositio转载 2010-08-30 18:02:00 · 763 阅读 · 0 评论 -
40条优化PHP代码的小提示
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;<br />2.echo的效率高于print,因为echo没有返回值,print返回一个整型;<br />3.在循环之前设置循环的最大次数,而非在在循环中;<br />4.销毁变量去释放内存,特别是大的数组;<br />5.避免使用像__get, __set, __autoload等魔术方法;<br />6.requiere_once()比较耗资源;<br />7.在includes和requires中使用绝对路径,这样在分析路径花的时间更少;原创 2010-08-30 16:41:00 · 926 阅读 · 0 评论 -
php 配置安全设置!
安全,PHP代码编写是一方面,PHP的配置更是非常关键。 我们php手手工安装的,php的默认配置文件在/usr/local/apache2/conf/php.ini,我们最主要就是要配置php.ini中的内容,让我们执行 php能够更安全。整个PHP中的安全设置主要是为了防止phpshell和SQL Injection的攻击,一下我们慢慢探讨。我们先使用任何编辑工具打开 /etc/loc转载 2009-10-28 11:02:00 · 552 阅读 · 0 评论 -
Apache下使用Alias创建虚拟目录的问题
最近在使用wampserver2.0i.exe安装下的快捷方式WampServer时,发现一个Bug,详细如下:本地环境:windows xp +php+Apache+Mysql客户端测试:IE 360浏览器 3.1.1.8Firefox 3.6 找到客户端的apache目录下的Alias directories目录下的Add an alias,单击它进入命令行转载 2012-11-11 14:14:46 · 1019 阅读 · 0 评论 -
PHP 使用 Imagick 裁切/生成缩略图/添加水印, 自动检测和处理 GIF
给骨头系统开发的图像库的 imagick 部分 ,支持 gif , 完美支持裁切、生成缩略图、添加水印 。支持按方位生成缩略图像, 如:// 把左上角优先$image->resize_to(100, 100, 'north_west');// 右边优先$image->resize_to(100, 100, 'east');...更多参数看源代码原图效转载 2012-11-11 14:16:12 · 1676 阅读 · 3 评论 -
A/B测试:基本概念
网站设计中,我们经常会面临多个设计方案的选择,比如某个按钮是用红色还是用蓝色,是放左边还是放右边。传统的解决方法通常是集体讨论表决,或者由某位专家或领导来拍板,实在决定不了时也有随机选一个上线的。虽然传统解决办法多数情况下也是有效的,但A/B 测试(A/B Testing)可能是解决这类问题的一个更好的方法。所谓 A/B 测试,简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部转载 2013-12-17 15:18:36 · 783 阅读 · 0 评论