eaccelerator.shm_size设置过大导致php-fpm启动失败

前几天遇到了这样的问题:在一台Godaddy Linux环境的VPS中,我编译安装了nginx, php,mysql。由于网站比较多,我选择安装了eaccelerator来缓存php以提供响应时间,eaccelerator编译完成并通过模块方式载入到php中,一切运行正常。但是通过控制eaccelerator_control.php的控制脚本看到了共享内存只有32M,于是设置eaccelerator.shm_size=”128”,重启之后发现php-fpm启动失败,而且没有任何提示。
找了很多资料,最后在github.com上找到了如下答案:
…阅读更多>>

Javascript和PHP中对调用对象的类型控制

在PHP中,有这样三个类,妻子,丈夫和银行,妻子和丈夫各有三个属性,分别为:性别,拥有多少钱,和各自一个不同的方法。妻子的方法是每个月把丈夫挣到的钱收起来,丈夫呢,则是每个月把钱上交给妻子。剩下的一个银行类,有两个属性,一个是拥有的资产数量,另外一个是方法,把钱上交给央行,在php中,我们可以这样定义这三个类:

class Wife{
	public $sex="female";
	public $money=10000;
	public function savemoney($people){
		$this->money+=$people->handed(1000);
	}
}
class Husband{
	public $sex="male";
	public $money=10000;
	public function handed($num){
		$this->money-=$num;
		return $num;
	}
}
class Bank{
	public $money=100000000;
	public function handed($num){
		$this->money-=$num;
		return $num;
	}
}

…阅读更多>>

为什么实例化的对象没有prototype属性

问题来源于这里:

<script>
	function Human(){
		this.height=180;	
		this.say=function(){
			alert("我在说话");
		}
	}
	var he = new Human();
	alert(Human.prototype);//Object Object
	alert(he.prototype);   //undefined
</script>

其实说起来很简单,因为prototype是构造器/函数才具有的属性。也就是说,只要这个函数不是构造函数,那么它便不具有prototype这个属性。 为了彻底弄明白继承,我们来看一下Javascript的原型集成机制。JavaScript内置的构造器有以下几个:
Object,Number,Boolean,String,Array,RegExp,Date,Function,Error,Math,JSON等,其中Math和JSON是以对象形式存在的,无需new便可创建。当我们用 var mm=new Math(1234565);的时候,会报错。
…阅读更多>>

Javascript对象与继承,__proto__,prototype,constructor含义及比较

最近在学习PHP的类,对封装,继承和多态有了进一步的认识,于是反过来学习Javascript中面向对象的方法,想把这一部分原来没有理解的,彻底弄明白。PHP和Javascript的封装在博客中进行了对比,可以说这一块还是比较好理解的。但是到了继承这一块,理解起来就有点难度,主要是集中在__proto__,prototype,constructor这三个属性的理解方面。Constructor比较好理解,就是一个构造函数,那么其它两个属性的含义呢?
最先遇到问题的是下面一个例子:
…阅读更多>>

PHP封装和Javascript封装的比较

隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别 — 百度百科
我们知道,在严格的面向对象的语言如java, c++中,对对象的封装是比较容易的。那么在javascript和php中,怎么去封装一个对象,并且隐藏对象的属性和细节呢?先看在PHP中怎么实现,由于PHP中提供了class关键字,我们可以用来定义一个类:

<?php
class Workers{
	public $age;  
	public $name;
	public $sex;
	private $wage=5000;

	public function __construct($a,$b,$c){
		$this->age=$a;
		$this->name=$b;
		$this->sex=$c;	
	}
	public function saypay(){
		echo $this->wage;
	}
}
?>

…阅读更多>>

网页图片预加载技术

说完了图片的延时加载,再来说一下图片的预加载。我们经常可以看到浏览器在加载大图的时候,通过自上而下这样铺过来,这样一来一是对用户体验不好,而是在图片下载完之前我们完全不知道图片大小,不利于控制网页界面。那么有没有一种方法,能让图片整体一次加载到网页上呢,答案是有的,那就是图片预加载技术。来看下面一个例子:
…阅读更多>>