存档

作者存档

CodeIgniter中使用Smarty模板引擎

2011年11月25日 一棵葱 没有评论

版权声明:原创作品,转载请务必以超链接形式标明文章 原始出处 、作者和本声明,否则将追究法律责任。

刚接触了 codeigniter,感觉其模板解析类比较简单,教程中有一句“模板解析类不是一个完善的模板解析方案。为了保持最高性能,我们的模板解析类非常精简。”,这也说明了这一点。所以还是用 smarty 吧。

1. 下载 Smarty-3.1.5 并解压,将其中的 libs 目录复制到 application/third_party 并改名为 Smarty-3.1.5(当然你可以复制到其它位置)

2. 在目录 application/libraries 下建立一个类文件 CI_Smarty.php(当然也可以命名为 MY_Smarty.php,只要前缀定义的是 MY)
阅读全文…

linux下configure命令详细介绍

2011年11月17日 一棵葱 没有评论

Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不 离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然要成为高手,对基础的熟悉不能超越哦。
为此我转载了一篇关于Configure选项配置的详细介绍。供大家参考
‘ configure’脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上’– help’选项执行’configure’脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包 时,知道他们的存在是很有益处的.下面对每一个选项进行简略的介绍:
–cache-file=FILE
‘configure’会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有’configure’脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助.
–help
输出帮助信息.即使是有经验的用户也偶尔需要使用使用’–help’选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.
–no-create
‘configure’中的一个主要函数会制作输出文件.此选项阻止’configure’生成这个文件.你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了.
–quiet
–silent
当’configure’进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为’configure’可能会比较慢,没有这种输出 的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的任何一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)
–version
打印用来产生’configure’脚本的Autoconf的版本号.
阅读全文…

CentOS的防火墙iptables配置

2011年11月16日 一棵葱 没有评论

在Linux中设置防火墙,以CentOS为例,打开iptables的配置文件:

vi /etc/sysconfig/iptables

通过/etc/init.d/iptables status命令查询是否有打开80端口,如果没有可通过两种方式处理:
方法一:
1.修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

2.关闭/开启/重启防火墙

/etc/init.d/iptables stop
/etc/init.d/iptables start
#restart 重启

阅读全文…

关于Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

2011年11月15日 一棵葱 没有评论

连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。

如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。
另一个解决办法是你现在不能用套接字建立连接因为它不见了,你可以建立一个TCP/IP连接,例如,如果服务器主机是192.168.0.1,你可以这样连接:

  %mysql   -u   root   -h   192.168.0.1   -p
  %mysqladmin   -u   root   -h   192.168.0.1   -p   shutdown

如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,你可以使用全局选项文件指定一个 不同的套接字,例如,如果数据目录是/usr/local/var,你可以通过将下列行加入/etc/my.cnf中,将套接字文件移到那里:

  [mysqld]
  socket=/usr/local/var/mysql.sock
  [client]
  socket=/usr/local/var/mysql.sock

对服务器和客户均指定路径名,使得它们都使用同一个套接字文件。如果你只为服务器设置路径,客户程序将仍然期望在原位置执行套接字,在修改后重启服务器,使它在新位置创建套接字
阅读全文…

分类: MySQL 标签:

大型网站后台架构的Web Server与缓存

2011年11月15日 一棵葱 没有评论

1.1 Web server

Web server 用来解析HTTP协议。当web服务器接收到一个HTTP请求时,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,web服务器可 以响应一个静态页面或者图片。进行页面跳转,或者把动态响应的产生委托给一些其它的程序完成,比如CGI, JSP, Servlets, ASP.NET,PHP脚本。

当用户访问一个网站时,首先用户通过查询DNS服务器,得到该域名对应的IP地址,然后使用这个IP地址来进行访问。用户的请求是一个url地 址,在web服务器端,url地址对应web服务器上的文件系统中的某个网站文件的路径。Web server的作用就是解析HTTP协议,通过用户发来请求的url地址从web服务器的文件系统中找到用户需要的HTML页面、静态文件,然后返回给用 户。如果用户访问的是动态页面,则将请求转发到应用服务器来执行。

1.1.1 FastCGI

1.1.1.1 CGI

CGI(Common Gateway Interface) ,指运行在服务器上,提供同客户端HTML页面的接口。多数CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。

1.1.1.2 FastCGI

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。而CGI解释器 的反复加载是CGI性能低下的主要原因。如果CGI解释器保持在内存中并接受FastCGI进程管理器的调度,则可以提供良好的性能、伸缩性能和 Fail-over特性等。
阅读全文…

分类: 服务器 标签:

CentOS 6.0上源码编译安装mysql 5.5.17

2011年11月11日 一棵葱 没有评论

1.安装相关库文件

yum install bison gcc gcc-c++ make autoconf automake ncurses-devel

2.安装cmake
从mysql 5.5开始,mysql源码安装开始使用cmake。使用cmake安装与configure有所不同。如果要使用源码编译安装mysql5.5,首先需要安装cmake。

wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6/
./configure
gmake
gmake install

阅读全文…

分类: CentOS, MySQL 标签: , , ,

PHP的Session机制

2011年11月9日 一棵葱 没有评论

一、PHP SESSION原理

我们知道,session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众多用户的会话数据呢?

首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来。建议唯一标识的方法有两种:cookie或者通过GET方式指定。默认配置的PHP使用session的时会建立一个名叫”PHPSESSID”的cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.ini中session.use_trans_sid等参数)。

我们查看服务器端session.save_path目录会发现很多类似sess_vv9lpgf0nmkurgvkba1vbvj915这样的文件,这个其实就是session id “vv9lpgf0nmkurgvkba1vbvj915″对应的数据。

真相就在这里,客户端将session id传递到服务器,服务器根据session id找到对应的文件,读取的时候对文件内容进行反序列化就得到session的值,保存的时候先序列化再写入。

事实就是这样,所以如果服务器不支持session或者你想自定义session,完全可以DIY,通过PHP的uniqid生成永不重复的session id,然后找个地方存储session的内容即可,你也可以学flickr把session存储在MySQL数据库中。

如果php使用默认的file方式存储session,还要注意lock问题。因为php会lock住session文件直到这个session关闭,所以如果你的应用中涉及iframe、下载、Comet或者用户在同一个浏览器打开多个tab等等多个并行请求都要操作session时,就可能会遇到由于lock影响用户操作的情况。一个简单的解决办法就是在操作完session时,及时调用session_commit()或session_write_close()来关闭session,从而释放锁。(注意在关闭session后不要再调用任何session相关的函数)。
阅读全文…

分类: PHP 标签:

Linux命令学习笔记

2011年11月9日 一棵葱 没有评论

版权声明:原创作品,转载请务必以超链接形式标明文章 原始出处 、作者和本声明,否则将追究法律责任。

在学习linux系统的过程中,会经常需要各种命令,本文会不断收集这些命令的使用方法。

  • 删除目录下的大量文件
ls | xargs -n 10 rm -rf

说明:ls输出所有的文件名(用空格分割),xargs将ls的输出,每10个为一组(以空格为分隔符)传递给rm -rf作为参数

  • 查看通过rpm命令安装的路径
rpm -ql 包名 | cat -n
  • 新建用户

1.作用
useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户。
2.格式
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
阅读全文…

分类: Linux 标签:

选择PHP框架

2011年10月29日 一棵葱 没有评论

PHP框架如此之多。从国产的fleaphp,qeephp(和fleaphp出自一个人之手?),thinkphp等到国外的zend framework,symfony,codeigniter,cakephp,yii等等
从轻量级的qee,tp,ci到重量级的zf,symfony,真是让人无从选择
其实我个人认为,PHP框架只要掌握两个就足够了。一个小巧的,用于开发简单的项目。一个重量级的,用于和其他人合作开发大型项目。
最近项目需要也用到了PHP框架,项目不大,用到了codeigniter框架。于是顺便学习了一下,然后自己重构了整个项目(原项目代码实在太乱,功能也不如人意)
发现ci真的很好用,很方便。但是CI是一个轻量级的简单的框架,小型应用可以使用,但是中大型应用就有些吃力了。
也许一些ci用户会说,CI也可以用于做中大型项目,但是请注意:我们使用框架的根本目的一个是为了项目有良好的架构,还有一点很重要就是可以快速开发。
哪怕不用框架,也可以开发大型项目,但是写出的系统可能架构不是很好(看水平了),开发速度自然也不必说,肯定会比较慢。
CI之所以不适合中大型应用就是因为它原本的架构虽然足够支持中大型应用,但是却缺乏很多的组件可以,也缺乏代码重用性方面的设计。
CI的优点就是:小巧可爱,速度够快,简单易学,同时配有大量常用的一些类库可以使用。
因此,小巧型框架我就选择CI,因为他的代码够简洁,功能也足够满足大部分小型应用了。 阅读全文…

分类: PHP 标签:

php的线程安全与非安全

2011年10月25日 一棵葱 没有评论

Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。

从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

原为出自:http://www.ityouku.com/train_know/3250.html

分类: PHP 标签: