PHP命名空间namespace学习

PHP命名空间namespace学习

说明

命名空间是php5.3.0版本引入的.主要是解决名称冲突的问题.C++和C#也称为namespace,Java称为package,虽然名字不一样,但是意义是一样的.

这块在查看php手册时,感觉解释的比较清楚.

什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。

Continue reading PHP命名空间namespace学习

使用 Nginx 的 X-Sendfile 机制提升 PHP 文件下载性能

很多时候用户需要从网站下载文件,如果文件是可以通过一个固定链接公开获取的,那么我们只需将文件存放到 webroot 下的目录里就好。但大多数情况下,我们需要做权限控制,例如下载 PDF 账单,又例如下载网盘里的档案。这时,我们通常借助于脚本代码来实现,而这无疑会增加服务器的负担。

例如下面的代码:
Continue reading 使用 Nginx 的 X-Sendfile 机制提升 PHP 文件下载性能

php编译中遇到各种报错解决办法

如果使用编译的方式来安装php,多几次,你会发现,会出现各种各样的报错.

下面汇总一些情况,以备查阅.

1) Configure: error: xml2-config not found. Please check your libxml2 installation.

Solutions :

Quote:

#yum install libxml2 libxml2-devel (For Redhat & Fedora)

# aptitude install libxml2-dev      (For ubuntu)

Continue reading php编译中遇到各种报错解决办法

Ubuntu 编译安装 Nginx PHP MySQL Memcached

之前开发机已经装好了apache,php,mysql.不过还想折腾下nginx php.

nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。

nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx

Continue reading Ubuntu 编译安装 Nginx PHP MySQL Memcached

Smarty中foreach的index、iteration的使用

.index包含当前数组索引,从零开始。

index示例

{* The header block is output every five rows *}
{* 每五行输出一次头部区块 *}
<table>
{foreach from=$items key=myId item=i name=foo}
{if $smarty.foreach.foo.index % 5 == 0}
<tr><th>Title</th></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>

Continue reading Smarty中foreach的index、iteration的使用

php将unicode编码转为utf-8方法

介绍

在前端开发中,为了让中文在不同的环境下都能很好的显示,一般是将中文转化为unicode格式,即\u4f60,比如:”你好啊”的 unicode编码为”\u4f60\u597d\u554a”。

JS里将中文转为unicode编码很简单。

function convert2Unicode(str) {
	return str.replace(/[\u0080-\uffff]/g,
	function($0) {
		var tmp = $0.charCodeAt(0).toString(16);
		return "\u" + new Array(5 - tmp.length).join('0') + tmp;
	});
}

并且也很简单,直接alert出来或者innerHTML到dom节点里都可以。

但如果将\u4f60\u597d\u554a”字符传递给php,php就不能直接echo或者其他操作了。直接echo的话还是原生的字符,不 能自动转化为中文。

Continue reading php将unicode编码转为utf-8方法

PHP clearstatcache() 函数

定义和用法

clearstatcache() 函数清除文件状态缓存。

clearstatcache() 函数会缓存某些函数的返回信息,以便提供更高的性能。但是有时候,比如在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存,以便获得正确的结果。要做到这一点,就需要使用 clearstatcache() 函数。

Continue reading PHP clearstatcache() 函数

filesize多次执行陷阱

最近发现写的一个Smarty插件执行有问题。排查了半天,也没发现问题。

我是读取一个文件,然后处理并追加一段字符串,再写入。出问题的情况是多次执行的时候,执行一次就没问题,最后简化处理,就直接附在读取的内容之后,发现得到的结果只是最后一次执行的追加内容。

Continue reading filesize多次执行陷阱

很好用的php执行时间分析工具webgrind

以前分析xdebug用的是(wincachegrind)http://sourceforge.net/projects/wincachegrind/

现在直接安装webgrind来调试速度会更好

http://xdebug.org/

windows

  1. 编辑php.ini,先注释掉zend:
    [Zend]
    ;zend_extension_ts = “D:/Xampp/php/zendOptimizer/lib/ZendExtensionManager.dll”
  2. 启用x-debug
    [xdebug]
    zend_extension_ts = “D:/Xampp/php/ext/php_xdebug-2.0.0-5.2.2.dll”;必须为完整路径
    xdebug.profiler_enable_trigger = 1
    xdebug.profiler_output_dir=”D:/Xampp/tmp/xdebug”

Continue reading 很好用的php执行时间分析工具webgrind

返回顶部