mp3插放器插件,需要的拿去用吧

2009年06月28日 11:41 上午  |  分类:Develop

模仿一个runcode插件改写的,wp的插件写起来还是比较简单的。

播放器是用豆瓣的,你要不喜欢可以换成别的,就需要自己改代码了。

调用方法【mp3】xxxxx【/mp3】,全角换成半角的就行了。

代码如下:

<?php
/*
Plugin Name: mp3player
Plugin URI: http://www.yibin001.com/archives/6348
Description: mp3player in a post
Version: 1.0
Author: yibin
Author URI: http://www.yibin001.com
*/

$player = new player();
add_filter('the_content', array(&$player, 'convert'), -500);
unset($player);
class player
{
function __builderplayer($url) {
if(empty($url)) return '';
return sprintf('<p><embed src="http://www.douban.com/swf/player.swf?url=%s&autoplay=0" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" width="400" height="80" /></p>',$url);
}
function convert($content)
{

$str_pattern = "/\[mp3\](.*?)\[\/mp3\]/i";
$content = preg_replace($str_pattern,$this->__builderplayer('\\1'),$content);
return $content;
}
}
?>

上传到wp的插件目录,然后在后台启用就行了

真正兼容.net的php 3DES加解密

2009年06月15日 4:16 下午  |  分类:Develop

php中3des加密的结果与.Net/java不同的帖子与话题实在是太多了,

我前不久也在倒腾这些,不过今天已经搞定了,完全与.net中的兼容

<?php
class Crypt3Des
{
private $key = "";
private $iv = "";
/**
* 构造,传递二个已经进行base64_encode的KEY与IV
*
* @param string $key
* @param string $iv
*/
function __construct ($key, $iv)
{
if (empty($key) || empty($iv)) {
echo 'key and iv is not valid';
exit();
}
$this->key = $key;
$this->iv = $iv;
}
/**
*加密
* @param <type> $value
* @return <type>
*/
public function encrypt ($value)
{
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
$iv = base64_decode($this->iv);
$value = $this->PaddingPKCS7($value);
$key = base64_decode($this->key);
mcrypt_generic_init($td, $key, $iv);
$ret = base64_encode(mcrypt_generic($td, $value));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $ret;
}
/**
*解密
* @param <type> $value
* @return <type>
*/
public function decrypt ($value)
{
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
$iv = base64_decode($this->iv);
$key = base64_decode($this->key);
mcrypt_generic_init($td, $key, $iv);
$ret = trim(mdecrypt_generic($td, base64_decode($value)));
$ret = $this->UnPaddingPKCS7($ret);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $ret;
}
private function PaddingPKCS7 ($data)
{
$block_size = mcrypt_get_block_size('tripledes', 'cbc');
$padding_char = $block_size - (strlen($data) % $block_size);
$data .= str_repeat(chr($padding_char), $padding_char);
return $data;
}
private function UnPaddingPKCS7 ($text)
{
$pad = ord($text{strlen($text) - 1});
if ($pad > strlen($text)) {
return false;
}
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) {
return false;
}
return substr($text, 0, - 1 * $pad);
}
}
?>
直接拿去用吧。

UCenter简析

2009年05月10日 4:34 下午  |  分类:Develop

UCenter是采用很经典的MVC架构

  全文阅读 »

寻Apache2下Discuz高性能配置方案

2009年04月28日 9:42 下午  |  分类:Develop

服务器品牌 DELL
服务器型号 PE1850
cpu类型 Intel Xeon 2.80GHz
cpu个数 2
内存条类型 512M
内存条个数 2
硬盘类型1 36G
硬盘个数1 1

操作系统:Linux centos2 2.6.18-92.el5
Apache 2.0
PHP 5.2.9

目前300并发,持续时间1小时
测试截图:


已安装Discuz7.0版,目前论坛并无帖子。

下午进行LoadRunner测试,
100用户并发时,响应时间在1.5s左右。
400用户并发时,响应时间约为3s,但每秒连接数一直处于170左右,无法继续上升。
此时,web服务器CPU占用70%-80%
Db服务器为2%,基本无压力。

在网上看到一些文章,Apache在配置正确的情况下基本上可以处理每秒2K的并发请求,但今天的测试让我大跌眼镜。
响应时间也不够理想,况且这次的测试只是测了首页的访问,而且首页是做了缓存处理的。
最开始是怀疑httpd.conf中最大连接数没有设置正确,改动后重启Apache依然如此。
最令人担忧的是居高不下的CPU占用率。

希望有在Apache下配置Discuz经验的大虾们能给一个合理的配置方案。