备忘日志【四】

来源:互联网 发布:大金淘宝 编辑:程序博客网 时间:2024/05/21 06:34

一、[2012-05-16] PHP的dubug

debug_print_backtrace() + var_dump() + die();
这个3个函数是debug无敌组合 

二、[2012-05-18] Linux用源码安装的程序如何卸载?

*.tar.gz/*.tgz、*.bz2形式的源代码软件包 
安装:tar   zxvf   *.tar.gz   或   tar   jxvf   *.bz2   先解压 
然后进入解压后的目录: 
./configure   配置 
make   编译 
make   install   安装 
卸载:make   uninstall   或   手动删除 
说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make   install命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure   --prefix=目录名,这样可以使用“rm   -rf   软件目录名”命令来进行干净彻底的卸载。


三、[2012-05-23]cp命令时错误提示:'Argument list too long' error


执行linux中的cp命令,当cp 的目录查过一定的数目会报Argument list too long 的警告

cp -uf /home/ftpuser1/public_html/ftparea/*.jpg /home/ftpuser2/public_html/ftparea/

And I am getting the error:

-bash: /bin/cp: Argument list too long

原因:*.jpg expands to a list longer than the shell can handle. Try this instead

解决办法:

find  /home/ftpuser/public_html/ftparea/ -name "*.jpg" -exec cp -uf "{}" /your/destination \;



四、[2012-05-24] Linux下如何使cp命令不提示覆盖文件

可以试一下 -f 选项,-f 一般表示强制执行(force)。

  cp -f file dir

  但好像结果并不像我们希望的那样,系统依然会有覆盖提示。为什么呢?

  原因很简单,系统将 cp 命令alias为 cp -i。当我们执行cp命令的时候,系统往往执行的是cp -i,-i 选项表示有交互的提示信息,所以执行 cp -f 的时候,系统实际执行的是   cp -i -f, 所以仍然会有覆盖提示。

  想要执行原始的cp也很简单,可以在调用cp的时候加入绝对路径,当然还可以直接执行下面的语句:

  \cp -f file dir


五、[2012-05-30] 命令行导出所有数据库

 mysqldump -u username -p password –-all-databases --no-defaults > all.sql

6、[2012-05-31] PHP单例模式的本质


PHP单例模式实现的核心要点有如下三条:
    1.    需要一个保存类的唯一实例的静态成员变量(通常为$_instance私有变量)
    2.    构造函数和克隆函数必须声明为私有的,这是为了防止外部程序new类从而失去单例模式的意义
    3.    必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从而返回唯一实例的一个引用

/*** 设计模式之单例模式* $_instance必须声明为静态的私有变量* 构造函数和析构函数必须声明为私有,防止外部程序new* 类从而失去单例模式的意义* getInstance()方法必须设置为公有的,必须调用此方法* 以返回实例的一个引用* ::操作符只能访问静态变量和静态函数* new对象都会消耗内存* 使用场景:最常用的地方是数据库连接。 * 使用单例模式生成一个对象后,* 该对象可以被其它众多对象所使用。 */class Example{//保存例实例在此属性中private static $_instance;//构造函数声明为private,防止直接创建对象private function __construct(){echo 'I am Construceted';}//单例方法public static function singleton(){if(!isset(self::$_instance)){$c=__CLASS__;self::$_instance=new $c;}return self::$_instance;} //阻止用户复制对象实例public function __clone(){trigger_error('Clone is not allow' ,E_USER_ERROR);}function test(){echo("test");}}// 这个写法会出错,因为构造方法被声明为private$test = new Example;// 下面将得到Example类的单例对象$test = Example::singleton();$test->test();// 复制对象将导致一个E_USER_ERROR.$test_clone = clone $test;


7、[2012-05-31] Nginx下配置FastCGI原理

       Nginx通过fastcgi调用python, Perl和C++等写的CGI程序。PHP有PHP-FPM (FastCGI Process Manager),这个对PHP来说更好的FastCGI进程管理器,关于PHP-FPM的更多信息,请Google php-fpm+nginx

        Nginx并不提供支持对外部程序的直接调用或者解析(所以缺少像apache里的mod_php这样的模块),所有的外部程序(包括PHP)必须通过fastcgi接口来调用,在Linux下接口是socket (文件socket或者Internet socket)。所以为了调用CGI程序,我们需要一个fastcgi的wrapper,这个wrapper绑定在某个固定socket上(比如端口或者文件socket),当nginx将CGI请求发送给这个socket的时候,wrapper接纳请求并fork一个新的线程,这个线程调用外部的程序或者解释器处理脚本并读取返回值,而wrapper再将返回的数据(网页或者图片等)通过fastcgi将数据通过那个固定的socket传递给nginx。


8、[2012-06-29] PHP中静态方法(static)

static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。

static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”

如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。

static关键字可以用来修饰变量、方法。

不经过实例化,就可以直接访问类中static的属性和static的方法。

static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。

static的属性,在内存中只有一份,为所有的实例共用。

使用self:: 关键字访问当前类的静态成员。

一个类的所有实例,共用类中的静态属性。

也就是说,在内存中即使有多个实例,静态的属性也只有一份。


9、[2012-09-29] WINDOWS下GVIM的块选

LINUX下是Ctrl-v,但是在windows下的GVIM,Ctril-v是粘贴。

WINDOWS下的GVIM的块选命令是:

V+Ctrl-q,然后使用hjkl移动。

先按V,在按组合键Ctrl-q,然后使用hjkl来移动光标选择块。

10、[2012-10-12] 缓冲区输出

some problems with ob_flush() and flush() could be resolved by defining content type header :
header( 'Content-type: text/html; charset=utf-8' );


so working code looks like this:

header( 'Content-type: text/html; charset=utf-8' );echo 'Begin ...<br />';for( $i = 0 ; $i < 10 ; $i++ ){    echo $i . '<br />';    flush();    ob_flush();    sleep(1);}echo 'End ...<br />';


原创粉丝点击