最近的文章列表

PHP怎么获取mysql数据表的字段名称和详细信息的方法SHOW FULL COLUMNS

首先我们需要了解下查询MySQL数据库/表相关信息的SQL语句:

代码如下:
 SHOW DATABASES                                //列出 MySQL Server 数据库。
SHOW TABLES [FROM db_name]                    //列出数据库数据表。
SHOW CREATE TABLES tbl_name                    //导出数据表结构。
2014/12/3 Comments:
解决PHP Curl出现403错误的办法 curl_setopt

自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果设置为不使用proxy则都能正常访问。

难道google baidu就不让用proxy连接么?显然不可能,所以打开curl的信息输出(curl_setopt($this->mSh, CURLOPT_VERBOSE, 1);)看看,得到以下结果:

2014/12/2 Comments:
详解PHP如何实现设计模式中的抽象工厂模式

抽象工厂模式(Abstact Factory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个 具体的工厂类。

【意图】

抽象工厂模式提供一个创建一系统相关或相互依赖对象的接口,而无需指定它们具体的类【GOF95】

【抽象工厂模式结构图】

2014/12/2 Comments:
解决PHP is_subclass_of函数的BUG:Inconsistent behavior of is_subclass_of with interfaces

is_subclass_of的作用:

代码如下:
bool is_subclass_of ( object object, string class_name )

如果对象 object 所属类是类 class_name 的子类,则返回 TRUE,否则返回 FALSE。
注: 自 PHP 5.0.3 起也可以用一个字符串来指定 object 参数(类名)。

2014/12/2 Comments:
PHP中使用X-SendFile头让文件下载更快

一般来说, 我们可以通过直接让URL指向一个位于Document Root下面的文件, 来引导用户下载文件.

但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让PHP来做转发, 为用户提供文件下载.

代码如下:
<?php
    $file = "/tmp/dummy.tar.gz"; // @郑州网建
2014/12/1 Comments:
介绍PHP @ at 记号的作用示例(屏蔽或忽落错误信息的方法)

看PHP的代码,总有些行前边有@符号,一直不知道是什么意思。 例如dede5.7 @ni=imagecreatetruecolor(ftoW,$ftoH);

今天用到了,就记一下吧。其实它是错误控制符,即即使出现错误,也无视出现的错误信息,继续执行下边的代码。

@$page=$_GET['page']?intval($_GET['page']):1;

这句是从URL中获取page关键字的值,比如"index.php?page=5",则$page就会取到5。

2014/12/1 Comments:
分享mac下Apache + MySql + PHP搭建网站开发环境

首先为什不自己分别搭建Apache,PHP和MySql的环境呢?这样自己可以了解更多知识,说起来也更酷。可也许因为我懒吧,我是那种“既然有现成的,用就是了”的人。君子生非异也,善假于物也。两千年前的荀子就教导我们,要善于利用工具,我为什么非要自己一点一点配置呢?

哈哈,刚才说了windows下的PHP开发环境我用的是AppServ开发套件,Mac下呢,我用XAMPP。这是致力于推广Apache服务器的非营利性项目--Apache Friends推出的工具。其实XAMPP也有windows的版本,现在看来,XAMPP应该比AppServ更加好用,尤其是在win8系统上。因为AppServ的其中windows开始菜单的服务器控制工具,在win8这种没有了传统开始菜单的系

2014/12/1 Comments:
PHP的foreach中解决:使用引用时的错误-Bug #29992 foreach by reference corrupts the array

一、问题
先看一个例子:

<?php
$ar = array(1, 2, 3);
var_dump($ar);
foreach ($ar as &$v) {}
foreach ($ar as $v) {}
var_dump($ar);
?>
2014/11/30 Comments:
php扩展imagick的说明和实例,如:添加水印、图片剪裁、图片大小等 ImageMagick

PHP建图通常都用GD库,因为是内置的不需要在服务器上额外安装插件,所以用起来比较省心,但是如果你的程序主要的功能就是处理图像,那麼就不建议用GD了,因为GD不但低效能而且能力也比较弱,佔用的系统资源也颇多,另外GD的creatfrom也有bug,而imagick却是一个很好的替代品,为此最近把我的一个项目由GD改成了imagick,但是改完之后出现了一些状况在此分享给大家.

首先说一下我这边出现的状况:

状况一:需要重写图像操作class

状况二:imagick多线程时会导致cpu使用率暴增到100%

在此顺便提一下imagick在centos6.4的安装方法:

1、安装ImageMagick

2014/11/30 Comments:
PHP程序性能优化的50个方法

1、 用单引号代替双引号来包含字符串,这样做会更快一些。因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会,注意:只有 echo 能这么做,它是一种可以把多个字符 串当作参数的“函数”(译注:PHP 手册中说 echo 是语言结构,不是真正的函数,故把函数 加上了双引号)。

2、如果能将类的方法定义成 static,就尽量定义成 static,它的速度会提升将近 4 倍。

3、$row['id'] 的速度是$row[id]的 7 倍。

4、echo 比 print 快,并且使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符串 连接,比如 echo $str1,$str2。

2014/11/29 Comments: