PHP中的PDO安装及使用方法

zhang 发表于 PHP, 数据库 分类,标签: ,
0
POD扩展是在PHP5中加入,该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。

PDO的目标

提供一种轻型、清晰、方便的 API
统一各种不同 RDBMS 库的共有特性,但不排除更高级的特性。
通过 PHP 脚本提供可选的较大程度的抽象/兼容性。

PDO的特点

性能。PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性。
能力。PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS 独特功能的方便访问。
简单。PDO 旨在使您能够轻松使用数据库。API 不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。
运行时可扩展。PDO 扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个 PHP 程序。例如,PDO_OCI 扩展会替代 PDO 扩展实现 oracle 数据库 API。还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird 的驱动程序,更多的驱动程序尚在开发。 [separator]

安装PDO
我这里是WINDOWS下开发用的PDO扩展,要是你要在Linux下安装配置,请到别的地方寻找。
版本要求:php5.1以及以后版本的程序包里已经带了;php5.0.x则要到pecl.php.net下载,放到你的扩展库,就是PHP所在的文件夹的ext文件夹下;手册上说5.0之前的版本不能运行PDO扩展。配置:
修改你的php.ini配置文件,使它支持pdo.(php.ini这个东西没有弄懂的话,先弄清楚,要修改调用你的phpinfo()函数所显示的那个 php.ini)把extension=php_pdo.dll前面的分号去掉,分毫是php配置文件注释符号,这个扩展是必须的。往下还有

;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll

各各扩展所对应的数据库是:

Driver name Supported databases
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird/Interbase 6
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 and SQLite 2

你要使用哪种数据库,只要把相应的扩展前的注释符号”;”去掉就可以了。

使用PDO 阅读全文 »

Discuz7.0程序二次开发必备:目录详解

zhang 发表于 PHP, web开发, 站长学堂 分类,标签: ,
0
基于7.0的标准程序,部分与插件无关的文件不作说明
文件颜色说明:
红色:程序核心文件,修改这类文件时千万要注意安全!
橙色:做插件几乎不会用到的文件,大概了解功能就可以了,其实我也不推荐修改这些文件
绿色:函数类文件,许多功能强大的自定义函数可以调用这类文件来使用
蓝色:最标准的插件制作常用文件紫色:该文件被Zend加密,请不要修改这类文件
每个目录里面都有一个空的index.htm,这是为了防止列目录用的,不必理会.
根目录 ./ (这里都是最基本的程序)
admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控制。
ajax.php——论坛模板的ajax判断及数据返回都在这里进行
attachment.php——附件文件,仅仅处理附件下载的功能。
announcement.php——论坛公告的显示,一般很少改
config.inc.php——配置论坛数据库、密码等信息,这个大家最熟悉了
discuz_version.php——论坛版本信息,用来更新用的,没有官方说明绝对不要修改
eccredit.php——论坛商品功能以及信用度查看的处理文件
faq.php——论坛自带的帮助
favicon.ico——显示在IE标题栏的的图标
forumdisplay.php——很简单,论坛主题列表的显示
index.php——控制首页元素显示
invite.php——论坛邀请注册程序文件
leftmenu.php——首页侧栏文件
logging.php——登陆系统,判断用户名、密码。
magic.php——论坛道具程序文件,处理道具购买、赠送等操作
medal.php——论坛勋章中心程序文件,处理勋章发送等功能
member.php——控制会员列表显示,积分策略等等信息显示
memcp.php——会员个人中心显示
misc.php——控制评分功能、论坛界面显示功能等等
modcp.php——这个是论坛前台的版主操作的迷你后台程序
my.php——查看一切和自己在这个论坛的行为,例如我的帖子用户组权限等等
阅读全文 »

十位顶级PHP开发工程师的开发原则

zhang 发表于 web开发 分类,标签:
3

我要晕了,到底我要听谁的? 在Web开发世界里,PHP是最流行的语言之一,从PHP里,你能够很容易的找到你所需的脚本,遗憾的是,很少人会去用“最佳做法”去写一个PHP程序。这里,我们向大家介绍PHP的10种最佳实践,当然,每一种都是经过大师们证明而得出的。

1. 在合适的时候使用PHP – Rasmus Lerdorf

没有谁比PHP的创建者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年发布了PHP这门语言,从那时起,PHP就像燎原之火,烧遍了整个开发阵营,改变了互联 网的世界。可是,Rasmus并不是因此而创建PHP的。PHP是为了解决web开发者的实际问题而诞生的。

和许多开源项目一样,PHP变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它完全可以作为一个案例,一个解决各种Web问题的工具需求所引起的案例,因此当PHP刚出现的时候,这种工具需求全部聚焦到PHP的身上。

但是,你不能奢望PHP可以解决所有问题。Lerdorf是第一个承认PHP只是一种工具的人,并且PHP也有很多力所不能及的情况。

根据工作的不同来选择合适的工具。我跑了很多家公司,为了说服他们部署和使用PHP,但是这并不意味着PHP对所有问题都适用。它只是可以一个解决大部分问题的front-end脚步语言。

作为一个web开发者,尝试用PHP解决所有问题是不科学的,同时也会浪费你的时间。当PHP玩不转的时候,不要犹豫,试用一下其他的语言吧。

2. 使用多表存储提高规模伸缩性 – Matt Mullenweg

没有人愿意质疑Matt Mullenweg在PHP方面的权威性,他开发了这个星球上最流行的blog系统,(依靠一个强大的社区力量支持): WordPress. 创建Wordpress以后,Matt和他的团队启动了WordPress.com平台,一个基于WordPress MU的免费blog站点。现在,Wordpress.com已经拥有大约400万用户, 这些用户每天提供超过 140,000篇的日志。 (要查看更多Wordpress.com的统计情况,请点击这里.)

如果有人知道如何让网站的规模伸缩自如,这个人一定是Matt Mullenweg。2006年的时候 Matt对Wordpress的数据结构进行了前瞻性的改进,并且解释了为什么Wordpress MU对每个blog使用独立的MYSQL表格, 而不是把所有的blog数据都塞进一个巨大的表格。

我们测试过这个方法,但是发现如果要扩展它的伸缩性,代价太高。如果用一个整体的数据结构,在大流量面前,你将会面临服务器硬件的问题。在MU 里面。用户们都被分布到独立的表格当中,并且可以轻易地组织起来。举个例子,WordPress.com把用户的数据分散存储到4096个数据库中,这些 数据库可以分散大规模的数据访问,实现流量和压力分流。

数据表的可迁移性让代码(blog)可以运行得更快,并且让系统具备更强的伸缩性。依靠强大的缓存策略和灵活的数据库运用策略, Matt向人们展示了时下最流行的Facebook和Wordpress.com都可以在PHP下稳定运行,并且处理惊人的访问量。

3. 千万不要相信用户 – Dave Child

Dave Child是Added Bytes (previously ilovejackdaniels.com) 网站的核心人物,这个网站以他出色的《cheat sheets for many programming languages》而闻名。 Dave为很多英国的公司服务,并且已经在编程世界里树立起相当的权威。 阅读全文 »

百万级PHP网站架构

zhang 发表于 网站架构 分类,标签:
3

在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de。Poppen.de 是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung。

Poppen.de目前有200万注册用户数、2万并发用户数、每天20万条私有消息、每天25万登录次数。而项目团队有11个开发人员,两个设计,两个系统管理员。该站点的商业模式采用免费增值模式,用户可以使用搜索用户、给好友发送消息、上载图片和视频等功能。

如果用户想享受不受限制发送消息和上载图片,那么就得根据需要支付不同类型的会员服务,视频聊天及网站其他服务也采用同样的策略。

Nginx

Poppen.de 所有的服务都是基于Nginx服务上的。前端有两台Nginx服务器在高峰期提供每分钟15万次请求的负载,每个机器已经有四年寿命,并且只有一个CPU 和3GB RAM。Poppen.de拥有三台独立的图像服务器,由三台Nginx服务器为*.bilder.poppen.de提供每分钟8万次请求服务。

Nginx 架构中一个很酷的设计就是有很多请求是由Memcached处理的,因此请求从缓存中获取内容而不需要直接访问PHP机器。比如,用户信息页(user profile)是网站需要密集处理的内容,如果把用户信息页全部缓存到Memcached上,那么请求直接从Memcached上获取内容。 Poppen.de的Memcached每分钟可以处理8000次请求。

架构中有三个Nginx图像服务器提供本地图像缓存,用户上载图 像到一个中央文件服务器。当向这三个Nginx之一中请求图像时,如果服务器本地中没有存在该图像,则从中央文件服务器下载到该服务器上作缓存并提供服 务。这种负载均衡的分布式图像服务器架构设计可以减轻主要存储设备的负载。 阅读全文 »

《高性能网站建设指南》笔记

zhang 发表于 web开发 分类,标签: , ,
0

高性能网站建设指南?认识HTTP网站加速前段性能黄金法则:
只有10%-20%的最终用户响应时间花在了下载HTML文档上,其余的80%-90%时间花在了下载页面的所有组件上
认识HTTP

HTTP是一种客户端/服务器协议,由请求和响应构成。浏览器向一个特定的URL发送HTTP请求,URL对应的宿主服务器发回HTTP响应。该协议使用简单的纯文本格式。
请求类型有GET,POST,HEAD,PUT,DELETE,OPTIONS和TRACE。
最常见的请求GET.以后可能会使用其他的请求类型,请参考REST架构。
GET请求包含一个URL,然后是头文件。HTTP响应包含状态码、头和响应体。
一个HTTP头:

浏览器
=====>
GET /us.js.yimg.com/lib/common/utils/2/yahoo_2.0.0-b2.js
HTTP 1.1
Host:us.js2.yimg.com
User-Agent:Mozila/5.0(…)Gecko/20061206 Firefox/1.5.09

服务器
<========
HTTP 1.1 200 OK
Content-Type: application/x-javascript
Last-Modified: Wed, 22 Feb 2006 04:15:54 GMT
Content-Length:355
…………………… 阅读全文 »

纽约时报:Facebook为何在日本遭受冷遇

admin 发表于 梁言坤语 分类,标签:
2

导语:美国《纽约时报》网络版今天撰文称,尽管Facebook在全球各地发展得如火如荼,但受隐私问题以及本地竞争对手等因素限制,这家全球最大的社交网站一直没有在日本市场有所建树。

以下为文章全文:

网络文化冲突

马克·扎克伯格(Mark Zuckerberg)是谁?

26岁的扎克伯格是Facebook联合创始人兼CEO,他或许是当今全美乃至全世界最受瞩目的人之一。但在日本,这个全球网络最发达的国家之一,却很少有人听说过他的大名。

总部位于美国硅谷的Facebook引领了全球社交网络的风潮,最近还刚刚突破了5.83亿用户大关,但它在日本的用户却相对较少。

Facebook的日本用户不足200万,不到该国网民总数的2%。这与美国的情况形成了鲜明对比:根据美国市场研究公司Socialbakers的数据,美国网民约有60%使用Facebook。

所以,即使在高盛向Facebook投资了4.5亿美元之后,日本这个庞大而增长迅速的网络广告市场仍是Facebook全球版图上的一大缺憾。

直到目前,日本人仍然分散于几大社交网站和游戏门户之中——包括Mixi、Gree和Mobage-town。这些网站的用户数都超过2000万,而且都提供各自的在线社交方式。

对于极其看重隐私的日本网民而言,这些网站都有一个至关重要的共同特点:允许用户隐藏真实身份。这与Facebook的实名制商业模式大相径庭。

日本网民通常都会隐瞒真实身份,而以笔名或昵称示人,就连著名博主也概莫能外。

“Facebook的确在日本面临挑战。”尼尔森驻东京分析师铃木茂德(Shigenori Suzuki)说,“这里有很多强大的对手,而且还要面临日本的网络文化问题。”

Facebook尚未对此置评。 阅读全文 »

英文网站如何一步步获取流量

zhang 发表于 站长学堂 分类,标签:
2

英文网站刚建立,一些站人一直忙着网站内容的充实,忙碌了一个星期左右,觉的站内容可以。就开始考虑如何推广,让更多人可以看到自己的成果。要是中文站的话,可以去百度博客,新浪博客,QQ群里发软文,可是现在我们的站是英文站,我们应该如何去推广它,让更多国外用户去访问它呢?

这里我们只作一个小的推广,我们用得是三个工具

1.Keyword Suggestion: http://freekeywords.wordtracker.com/

2.Google Trends: http://www.google.com/trends/hottrends?sa=X

3.DIGG: http://www.digg.com

有些朋友不禁要问了这三个英文工具如何用呢?

1.Keyword Suggestion这个工具有点类似百度相关搜索,主要是为国了解老外的搜索习惯(免费).

2.Google Trends用与了解关键词的趋势有点像中文的百度风云傍.不过大部分词都有可能是临时性的,这个主要是临时性的,有些词今天比较热门你做上去了明天就没 有人搜索了。一般是从中挑选一些比较冷的词,竞争量小.并针对这些词写一篇相关性的文章,但是要原创,不要是COPY,老外喜欢看有质量的东西。

3.DIGG: 是一个可以发软文的地方。它可以让你的文章快速而及时地被收录,最重要的是在DIGG里用户点击你发的那个文章是直接去到你的原文地址的。 阅读全文 »

数据数构:教你透彻了解红黑树

zhang 发表于 web开发 分类,标签:
0

红黑树系列,三篇文章于今日已经完成。[二零一一年一月三日]

教你透彻了解红黑树:
http://blog.csdn.net/v_JULY_v/archive/2010/12/29/6105630.aspx
红黑树算法的层层剖析与逐步实现
http://blog.csdn.net/v_JULY_v/archive/2010/12/31/6109153.aspx
教你彻底实现红黑树:红黑树的c源码实现与剖析
http://blog.csdn.net/v_JULY_v/archive/2011/01/03/6114226.aspx
——————————

一、红黑树的介绍

先来看下算法导论对R-B Tree的介绍:
红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。
通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其
他路径长出俩倍,因而是接近平衡的。

前面说了,红黑树,是一种二叉查找树,既然是二叉查找树,那么它必满足二叉查找树的一般性质。
下面,在具体介绍红黑树之前,咱们先来了解下 二叉查找树的一般性质:
1.在一棵二叉查找树上,执行查找、插入、删除等操作,的时间复杂度为O(lgn)。
因为,一棵由n个结点,随机构造的二叉查找树的高度为lgn,所以顺理成章,一般操作的执行时间为O(lgn)。
//至于n个结点的二叉树高度为lgn的证明,可参考算法导论 第12章 二叉查找树 第12.4节。
2.但若是一棵具有n个结点的线性链,则此些操作最坏情况运行时间为O(n)。

红黑树,能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)。

ok,我们知道,红黑树上每个结点内含五个域,color,key,left,right。如果相应的指针域没有,则设为NIL。

一般的,红黑树,满足以下性质,即只有满足以下全部性质的树,我们才称之为红黑树:

1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点,即空结点(NIL)是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

阅读全文 »

金山张宴谈架构

zhang 发表于 网站架构 分类,标签:
0

主持人:冯大辉,现任丁香园 (http://www.dxy.cn)网站CTO。曾历任支付宝架构师、数据库团队负责人等职。

新建图片许式伟:作为系统架构师,您一般会从哪些方面来保证网站的高可用性(降低故障时间)?

张宴:很多因素都会导致网站发生故障,从而影响网站的高可用性,比如服务器硬件故障、软件系统故障、IDC机房故障、程序上线前测试未发现的Bug、遭受分布式攻击、突发访问人数剧增等。

一套良好的网站系统架构,应该尽可能地避免只有一台服务器、一个数据库、一套软件节点等单点故障的存在。单点故障一旦发生,将直接导致网站服务不可 用,恢复正常服务所需的时间也比较长,甚至还可能无法恢复。负载均衡集群、双节点热备、分布式处理等都可以用来解决单点故障,比如提供相同业务的Web服 务器、MySQL数据库从库,都可以构建负载均衡集群。一旦集群中的一台服务器、一个服务出现故障,自动实时摘除,对用户来说是不可感知的,不会影响到整 个网站的访问,可以为运维工程师留下足够的时间去排查和解决故障。 阅读全文 »

以实例说明域名A记录与泛解析的联系与区别

zhang 发表于 站长学堂 分类,标签: ,
0

通常A记录决定了一个域名的指向,一般的作用就是把你的域名指向你的主机地址,这样就可以通过域名访问你的主机。而泛解析则是把你主域名下的所有二 级域名都指向一个主机地址。我的域名是在godaddy购买的,网站空间是在elinkhost购买的。那么怎样通过我的域名访问我的网站呢?请往下看

首先登入godaddy账户对域名进行管理

阅读全文 »