2014年7月23日PHP编程中10个最常见的错误

本文根据10 Most Common PHP Mistakes整理而来,非逐字翻译,在保证原文内容不变的同时,加入了些自己的理解。

错误1:foreach循环后留下悬挂指针

在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法:

...

分类:技术心得  标签:PHP  错误    网友评论1条  已浏览loading

2014年2月11日PHP应用的水平扩展

英文原文:Horizontal Scaling of PHP Apps


结合原文和自己的理解,简单总结下,便于理解和日后查阅。


一个web网站,面对流量增长和其他性能瓶颈的挑战,我们应该如何去处理呢?两个方面-优化和扩展


优化如升级php版本至最新版本、做好数据库索引、静态内容缓存等,比如一种常用的思路是利用Nginx做反向代理,具体可参考此处。扩展包括水平扩展和垂直扩展,垂直扩展简单说就是硬件的升级,以此获取更好的性能。水平扩展是用更多的服务器来做负载均衡,以此为网站提升更好的性能。负载均衡大的方面有两种实现,软件和硬件。软件可以用Nginx和Squid来实现,硬件可参考此列表

...

分类:技术心得  标签:PHP  水平扩展  垂直扩展    网友评论1条  已浏览loading

2014年1月16日PHP HTTP 客户端 - Guzzle

简介
Guzzle是PHP中的一个的独立HTTP客户端。可以通过composer来安装,composer.json文件内容如下所示:

{
	"name":"jd/guzzle demo",
	"authors":[
		{
			"name":"Eddy",
			"email":"eddy@rrgod.com"
		}
	],
	"require":{
		"guzzle/guzzle":"~3.7"
	}
}
保存文件,运行composer install命令,Guzzle库安装完成,OK~
...

分类:技术心得  标签:PHP  HTTP  guzzle    网友评论0条  已浏览loading

2013年11月8日php+ajax实现长轮询(Comet)

所谓ajax长轮询,简单说就是客户端发起ajax请求,服务端会挂起该请求(通过循环),直到条件触发使服务器返回,在服务器返回前客户端一直处于pending,等待服务器返回。

ajax长轮询可以减少客户端的无用请求,不过服务端的压力会大一些。另外可以采用websocket实现推送,不过兼容性会差些,有些浏览器不支持websocket。

下面的代码可实现Comet:

服务端代码:

[CODE=php]
//server.php 服务端
set_time_limit(0);
$filename = './data.txt';
...

分类:技术心得  标签:PHP  Ajax  Comet    网友评论1条  已浏览loading

2013年11月1日[转]深入理解PHP中的数组-Array

很好的一篇讲解PHP数组的博文,详细讲解了php中数组与其他语言的差别,内核如何实现数组,数组的遍历,另外还分析了网上广为谬传的foreach比for性能好的说法。


我自己也测试了下foreach和for的性能,在php 5.3 和5.4版本下,不管遍历时是否改写数组,还是foreach时用引用方式,结果都未显示foreach优于for,我自己测试的结果是for比foreach还稍微快那么点儿:)如果foreach不采用引用方式,那for比foreach就快许多~


...

分类:知识积累  标签:PHP  array  数组    网友评论0条  已浏览loading

2013年8月17日php中类外部访问类私有属性的方法

我们都知道,类的私有属性在类外部是不可访问的,包括子类中也是不可访问的。比如如下代码:
class Example1{
private $_prop = 'test';
}

$r = function(Example1 $e){
return $e->_prop;
};

$a = new Example1();
var_dump($r($a));

//运行结果:Fatal error: Cannot access private property Example1::$_prop
...

分类:知识积累  标签:PHP  私有属性    网友评论0条  已浏览loading

2013年8月2日在一个类中保存多个类的实例对象

如何在一个类中保持多个其它类的实例对象,而且保证不重复初始化?

看了下Slim这个小框架,它是这么做的:

$app = new \Slim\Slim();
程序初始化时,会构造一个全局的Slim对象实例,在Slim类构造函数中首先获取Set对象实例,接着实例化相关类并保存在Slim类的Container属性中。
[CODE=php]// Setup IoC container
...

分类:技术心得  标签:PHP  匿名函数    网友评论0条  已浏览loading

2013年6月4日PHP中RSA加密与解密及签名与验证

最简单的方法一般都是用open_ssl扩展来实现,但有些情况下只能用原生的RSA算法来实现,比如公钥文件只提供了m和e的值。不知道有没有方法可以由m和e值生成相应的cer证书文件?搜了一番无果。。。
需要用到的额外库:
BigInteger.php,这里有下载-http://pear.php.net/package/Math_BigInteger。也可以直接用pear安装:pear install Math_BigInteger
...

分类:技术心得  标签:PHP  RSA    网友评论0条  已浏览loading

2013年5月27日测试驱动开发(TDD)For PHP

地址:http://net.tutsplus.com/sessions/test-driven-php/


此系列文章介绍了测试驱动开发的一些基本概念、自动化测试以及如何在PHP中去进行实践。详细介绍了PHPUnit的用法,以及结合Selenium进行user acceptances tests。另外还介绍了Mockery,并与PHPUnit’s mocking framework进行了横向比较。

...

分类:知识积累  标签:TDD  PHP    网友评论0条  已浏览loading

2013年3月21日汉诺塔问题

 我个人觉得对于如何去用递归的思想解决问题,关键在于从最根本点思考一个问题,先不用管小的实现过程。

比如经典的汉诺塔问题,其实很简单,先不用去想一个个盘子怎么去移动,只要知道:

初始状态:A上有n个盘子,B为空,C为空。

第一步,把A上的n-1个盘子移动到B;第二步,把A上的第n个盘子移动到C;第三步,把B上的n-1个盘子移动到C。搞定!

假设实现每次移动操作的函数为move($a,$b,$c,$n),则php实现代码如下:

...

分类:技术心得  标签:PHP  汉诺塔    网友评论0条  已浏览loading

2013年3月1日php实现简单验证码识别


写了个简单验证码的识别程序,分享下。基本步骤就是二值化、去噪点、取字符、做字模库,最后利用字模库实现验证码识别
部分代码如下:

COLOR && $rgb['blue']>COLOR && $rgb['green']>COLOR) {
			//echo '1';
			$sourceData[$i][$j]=0;	
		}else{
			//e

分类:技术心得  标签:PHP  验证码识别    网友评论0条  已浏览loading

2013年2月6日Yii 1.1 Application Development Cookbook中文翻译(第二章)

翻译了比较久,年前总算是把这个小任务完成了。文章是用markdown语法来写的,在github上阅读效果更佳:

去GitHub上阅读Yii 1.1 Application Development Cookbook中文翻译(第二章) 

简介

本章将帮助你学习Yii框架中关于URL路由、控制器和视图的一些有用的知识。学习完本章内容你可以更加灵活的运用控制器和视图。

...

分类:技术心得  标签:PHP  yii    网友评论0条  已浏览loading

2013年1月21日环迅在线支付银行直连获取银行编号php示例


官方文档只有asp的例子。环迅的这个用的SOAP,参数传输文档也没说明,有点坑爹。。。摸索了下,在php下面可以用如下代码实现:
注:php需安装SOAP扩展。

<?php
header('content-type:text/html;charset=utf-8');

$Mer_code = '000166';
$Mer_key = 'cQ0YAtyVNoiEeKrZJ5F5Qp2pMohwspfv6XoiU3wHYtcc1YOEhJ3SjDVMylmwmbD7jMhg5ifqjX67mzNN02p8MmlSb1KIqa5XF4TEQHjZEmJmhyAYxyVJMeLWBofdxwaj';
...

分类:网站相关  标签:环迅  PHP  银行直连    网友评论1条  已浏览loading

2013年1月16日一些Apache、Php和Mysql的优化配置选项

 1、apache

apache的配置文件:httpd.conf
HostnameLookups
语法:HostnameLookups On|Off|Double
默认:HostnameLookups Off
此选项可用来配置是否在客户端IP上启用DNS查询,一般设为off。
 
KeepAlive
语法:KeepAlive On|Off

...

分类:网站相关  标签:Apache  PHP  Mysql  优化    网友评论0条  已浏览loading

2012年12月24日php socket编程实例

因为用到客户端程序与网页三方支付接口交互,我觉得可以这样来实现,在三方支付回调页面中放一个socket服务端,客户端程序与这个socket服务端进行交互,以此来进行最终业务逻辑处理。

php中socket编程,简单实例代码如下:

服务端:...

分类:网站相关  标签:PHP  socket    网友评论0条  已浏览loading