Archive for the 'PHP' Category


Category: PHP     Comments    

Zend Framework 0.6 范例

为了方便自己还有大家学习特定写此范例,使用的ZF版本是0.6,由于比较忙,没有写相应的教程,但代码里面已经有详细的注释
此范例参照了
http://www.akrabat.com/zend-framework-tutorial/
中的视图以及数据库结构,但其它操作完全不一样,故不能按照上面的教程来研究代码

本范例只支持独立的虚拟主机,请根据实际情况修改你的Vhost配置

<VirtualHost *:80>
RewriteEngine on
#注意这个Rewrite不能写在.htaccess
RewriteRule !^/web /index.php [L]
ServerName www.vf.com
ServerAdmin xxxxxxxxxx
DocumentRoot xxxxxxxxxx
</VirtualHost>

添加好Vhost后修改hosts文件,添加一条本地指向
127.0.0.1 [url=http://www.vf.com]www.vf.com[/url]
这里告诉大家一个快速找到hosts文件的方法,win+r 后运行drivers就会打开%SystemRoot%\system32\drivers然后再打开里面的etc文件平就可以找到hosts了………其实这个应该好多人知道-_-….

大家可能注意到 我的Rewrite并没有使用官方文档中
RewriteRule !\.(js|ico|gif|jpg|png|css|html|php)$ index.php
或者
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
我是把所有web元素:图片,FLASH,JS都放在web目录底下的,所以只排除web目录就可以了,不需要判断扩展名(上面第一种方法)或者url访问的文件是否是真实存在的文件,要是有一个访问量是百万级或者千万级的网站用上面的方法性能消耗应该是好显明的,特别是判断文件是否真实文件

这次我把模板文件也放在web目录中去了,原来应该放在根目录view底下,这样可以防止非法访问模板文件但这只是一个范例,所以就不那么严格了,更何况这个范例除了模板就没有图片或者其它WEB元素了,要是空着WEB目录会显得寒酸…

数据库备份文件在db/db.sql,请使用MySQL 4.1+ 你会看到db目录底下有一些sqlite的相关文件,但不必理会,现在ZF的pdo_sqlite好像还不能用,我在调用的时候居然没任何效果,也没有出错信息,但也懒得查看它的代码了
恢复好数据后,编辑index.php文件,修改数据配置,然后打开http://www.vf.com]www.vf.com就可以测试了….

缺省目录结构
root
|_ZendFramework-0.6.0 具体位置修改index.php 第20行
|_ZFNews

下载范例
—————————————————————————————–
在这里顺便帮公司招聘,如果你熟悉PHP5,SMARTY,AJAX,面向对象编程;热爱WEB开发;对新技术有浓厚兴趣的话欢迎加入我们的团队,有意者请把简历发到chenwenj{a-t}gmail.com
最好有大型网站的开发经验

Category: PHP     Comments    

PHP缓冲机制[转]

动态网站的内容加速显示十分重要,本文通过对 PHP 几个函数的深入讨论,提出了 PHP 网页压缩和缓冲的解决方案
动态网站的内容加速显示十分重要,本文通过对 PHP 几个函数的深入讨论,提出了 PHP 网页压缩和缓冲的解决方案

一、介绍几个控制 PHP 输出的函数

PHP4 采用了缓冲机制,在你决定发送以前,所有内容只是存在于缓冲中,而不是直接发送给浏览器,虽然你可以用 header 和 setcookie 函数来实现,但是这两个函数相比于功能强大的输出函数来说只是一点“雕虫小技”。让我们来看看这些函数的真本事:

void ob_start(void);

本函数告诉 PHP 处理器把所有输出重定向到内部缓冲,调用这个函数后,就不会有输出到浏览器。

string ob_get_contents(void);

本函数把输出缓冲返回到一个字符串,你可以用来把堆积起来的输出一起发送到浏览器。当然要先关掉缓冲。

int ob_get_length(void);

本函数返回输出缓冲的长度。

void ob_end_clean(void);

本函数清除并关闭缓冲。在输出到浏览器之前你需要使用这个函数。

void ob_implicit_flush ([int flag])

本函数用来控制隐式缓冲泻出,缺省为 off,如果打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。

二、采用输出控制来压缩 PHP 的输出

在开始之前,要保证你的 PHP4 编译时支持 Zlib。
首先,初始化输出缓冲:

ob_start();
ob_implicit_flush(0);
?>

然后产生所有的输出内容。

print(”本例为压缩输出!”);
?>
页面生成以后,采用:

$contents = ob_get_contents();
ob_end_clean();
?>

还要检查浏览器是否支持压缩数据,我们采用在变量 $HTTP_ACCEPT_ENCODING 中检查 “gzip, deflate”的办法:

if(ereg(’gzip, deflate’,$HTTP_ACCEPT_ENCODING)) {
// 产生 gzip 后的内容
} else {
echo $contents;
}
?>

下面我们分析怎样产生 gzip 输出:

// 告诉浏览器下面接收的是 gzip 数据。
header(”Content-Encoding: gzip”);
// 显示 gzip 文件的文件头
// 只要一次就够了
echo “x1fx8bx08×00x00×00x00×00″;
// 计算长度和 CRC 校验码
$Size = strlen($contents);
$Crc = crc32($contents);
// 压缩数据
$contents = gzcompress($contents, 9);
// 不能直接在这里输出内容,因为还没有写入 CRC 呢!
$contents = substr($contents, 0, strlen($contents) - 4);
echo $contents;
gzip_PrintFourChars($Crc);
gzip_PrintFourChars($Size);
function gzip_PrintFourChars($Val) {
for ($i = 0; $i < 4; $i ++) {
echo chr($Val % 256);
$Val = floor($Val / 256);
}
}
?>

三、缓冲 PHP 的输出

在 PHP4 里能很容易的实现缓冲,我们来看例子:

// 对请求的 URI 产生唯一的文件名。
$cached_file=md5($REQUEST_URI);
if((!file_exists(”/cache/$cached_file”))||(!is_valid(”/cache/$cached_file”))) {
ob_start();
ob_implicit_flush(0);
// 在这里输出缓冲
$contents = ob_get_contents();
ob_end_clean();
$fil=fopen($cached_file,”w+”);
fwrite($fil,$contents,$strlen($contents));
fclose($fil);
}

readfile($cached_file);
?>

四、结论

PHP 输出缓冲函数在操作脚本输出方面十分有用,把缓冲压缩后输出能减少 80% 的输出时间,这对于存取其他数据资源(例如数据库或者 XML)来说,也是一个很好的缓冲机制。

Category: PHP     Comments    

XMLHttp调用文件$_SERVER['HTTP_REFERER']为空

不知道是什么原因,XMLHttp向一个文件提交GET或者POST请求也算是打开一个页面吧,怎么取不到HTTP_REFERER

Category: PHP     Comments    

Pear AJAX Package

pear也有AJAX包了,赶紧试试
HTML_AJAX 0.1.4 需要PEAR包的版本>=1.3.6
安装PEAR1.3.6需要:
PHP Version: PHP 4.2 or newer
PEAR Package: Archive_Tar 1.1 or newer
PEAR Package: Console_Getopt 1.2 or newer
PEAR Package: XML_RPC 1.4.0 or newer
PHP Extension: xml
PHP Extension: pcre
PHP Extension: xmlrpc (optional)

先升级PEAR1.3.6
pear upgrade PEAR-1.3.6
我这里的XML_PRC版本比较低,要升级
pear upgrade xml_rpc-1.4.0

然后就可以安装HTML_AJAX了
pear install HTML_AJAX-0.1.4

然后再下载
http://pear.php.net/package/HTML_AJAX
放到你的DOCUMENTROOT或者虚拟主机目录运行examples里面的例子吧

Category: PHP     Comments    

以FastCGI模式运行PHP

20050721-fastcgi2
据说无论从运行效率,稳定性都比用ISAPI模式好,可以设置不同虚拟主机分别运行PHP4和PHP5,但对于用Zend Studio开发者来说有个致命的缺点:用FastCGI模式时就用Zend进行调试会有问题…郁闷。虽然好处不少,看到这里就打消了在本本安装的念头。

获取FastCGI:
http://www.fastcgi.com/dist/

相关文单:
http://phplens.com/phpeverywhere/fastcgi-php

« Previous PageNext Page »

Copyright © 2005-2009 kingchan.net, All rights reserved, Wordpress-Theme by Felix Krusch 粤ICP备09019789号