存档

文章标签 ‘php’

wordpress的缓存机制

2010年3月11日 1 条评论

  Wordpress缓存机制分为内置缓存机制和外部缓存插件两种方式。
  Wordpress从2.0起出现的cache.php实现了一个在WP内部的缓存机制。从代码上看其作用只能适当的减少在一次请求过程中SQL查询的次数,而不能如JAVA、ASP.NET那样实现驻留在内存中的缓存机制。这与PHP的特性有关,PHP是一种解释性的语言,其是无法驻留内存的,除非使用PHP相关的缓存插件。

  对于目前的wordpress缓存插件而言,都以生成静态页面的方式实现。如比较常用的wp_super_cache与cos_html_cache。
  开启这些高级的缓存存机制的一般要在wp-config.php中定义WP_CACHE,即:

define('WP_CACHE',true);

这样在wordpress的wp-setting.php中就会加载wp-content/advanced-cache.php。

wordpress内置缓存的工作原理与流程:

在一次请求过程中,如果开启了内置缓存机制,那么在执行一次查询时将会把一些数据通过cache.php中的wp_cache_set()方法来暂时存放。在这次请求中如果再次出现查询且满足一些逻辑上的条件,那么会先通过wp_cache_get()方法来查找缓存中的数据,如果存在那么直接取到,如果不存在再向数据库查询。这样就减少了一些对数据库的查询次数。不过需要注意的是这个缓存只是存在于本次请求周期中。

分类: 高级民工 标签: ,

PHP无MySQL拓展

2010年3月7日 没有评论

  今天在机器上搭建apache+php+mysql测试环境后安装wordpress出现“您的 PHP 似乎没有安装运行 WordPress 必须的 MySQL 拓展。”的提示。但明明extension=php_mysql.dll已经开启,环境变量也全部设置好了,怎么会出现这个问题呢。百思不得其解,搜索也找不到答案。后来来无疑中发现在PHP配置文件php.ini中的extension_dir参数,其说明为”; Directory in which the loadable extensions (modules) reside.”,大意就是模块的位置,默认是extension_dir=”./”改为extension_dir=”ext/”后wordpress正常安装.

分类: BLOG建设 标签:

php模拟POST提交

2009年6月4日 1 条评论

  在写一个同步插件时用到的,以socket模拟POST提交。

/*
$URL:指定的地址
$post_data:发送的数组
$referrer:提交页
以POST方式发送数据给指定的URL,返回相应的信息
*/
function send_data($URL,$post_data,$referrer=""){
	// parsing the given URL
	$URL_Info=parse_url($URL);
	// Building referrer
	if($referrer=="") $referrer=$_SERVER["SCRIPT_URI"];
 
	// making string from $data
	foreach($post_data as $key=>$value)
		$values[]="$key=".urlencode($value);
 
	$data_string=implode("&",$values);
	// Find out which port is needed - if not given use standard (=80)
	if(!isset($URL_Info["port"])) 
		$URL_Info["port"]=80;
	// building POST-request:
	$request.="POST ".$URL_Info["path"]."?".$URL_Info["query"]." HTTP/1.1\n";
	$request.="Host: ".$URL_Info["host"]."\n";
	$request.="Referer: $referrer\n";
	$request.="Content-type: application/x-www-form-urlencoded\n";
	$request.="Content-length: ".strlen($data_string)."\n";
	$request.="Connection: close\n";
	$request.="\n";
	$request.=$data_string."\n";
	$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
	fputs($fp, $request); 
	while (!feof($fp)) {
		$data.= fgets($fp,1024); //获取返回结果
	}
	fclose($fp);
	return $data;
}
分类: 高级民工 标签: