标签归档: php

NGINX userid 分析、解码

生成userid的代码在 http/modules/ngx_http_userid_filter_module.c 大概550行左右。
uid_set 是4个uint32构成的,其中比较有用的是第二个unit32,是userid的生成时间。第四个是一个递增值 以 0x03030302 为初始值,每次递增0x100。

default: /* AF_INET */
                sin = (struct sockaddr_in *) c->local_sockaddr;
                ctx->uid_set[0] = sin->sin_addr.s_addr;
                break;
            }

        } else {
            ctx->uid_set[0] = htonl(conf->service);
        }

        ctx->uid_set[1] = htonl((uint32_t) ngx_time());
        ctx->uid_set[2] = htonl(start_value);
        ctx->uid_set[3] = htonl(sequencer_v2);
        sequencer_v2 += 0x100;
        if (sequencer_v2 < 0x03030302) {
            sequencer_v2 = 0x03030302;
        }
// 用PHP解码nginx userid
$str = $_REQUEST["uid"] ?: $_COOKIE['uid'];

function nginx_userid_decode($str)
{
        return  unpack('N*', base64_decode(str_replace(' ', '+', $str)));
}

$hash = nginx_userid_decode($str);
var_dump($hash);
date_default_timezone_set("UTC");
var_dump(date("Y-m-d H:i:s", $hash[2]));

参考文章:
http://www.lsproc.com/blog/nginx_userid_decode/

Read: 2833

Linode LNMP服务器环境配置笔记

我选的是1GB的套餐,每个月$20,年付减10%,实付$230.21折合人民币1400多点。

Linode 1GB

Linode 1GB

操作系统: CentOS Linux 6.2 64bit
运行环境: Nginx+PHP+MySQL

准备工作
编译环境部署:
在服务器上启用编译环境是非常危险的做法,为了保证安全我专门用一个虚拟机来做编译工作,编译完成后再将程序部署至服务器即可。

根据VPS操作系统情况下载安装CentOS 6.2 64bit, 因为只是做编译机,所以只要装 Minimal 版就可以了,几百M,下载也很快。
历史版本的ISO文件可以在 http://vault.centos.org 找到。

继续阅读

Read: 2560

从百度空间导入到WordPress

从此这里做主博了,于是写了个导入程序把我百度空间的东西也搬了过来,下次还得写个导入相册的。。。

看了网上很多导入工具都是用的RSS来导入,会丢掉很多东西,而且一些被百度和谐掉的内容是抓取不到的,所以做了这么个工具通过采集的方式直接从HTML里抓取博客内容。

 

源文件下载:import_baiduhi.php_.zip

 

配置方法:

在程序底部修改下面两个变量的值,如果不想抓私密文章cookie留空也可以。

$account = 'meshikar'; //百度空间的URL后缀
$cookie = 'YOUR COOKIE'; //登陆后的百度COOKIE,用于抓取私密文章

附上Cookie的获取方法:

登陆后用firefox的firebug在网络选项卡中点开第一个请求,查看请求头信息把Cookie的内容复制下来就是了。

cookie的获取方法

继续阅读

Read: 1172

[转]php sphinx 高效率搜索引擎搭建

原文地址:http://blog.csdn.net/adparking/article/details/7207119

 

1.下载PHP客户端安装:

http://pecl.php.net/package/sphinx

 

vim sphinxclient.c
找到
void sock_close ( int sock );
改为
static void sock_close ( int sock );

 


 php.ini加扩展,客户端安装完毕 2.安装sphinx,前提你已经安装mysql且安装了mysql-devel重源码安装mysql

mysql-devel都已经安装,yum安装的运行
yum -y install mysql-devel

下载sphinx2.0.1地址:  

http://sphinxsearch.com/downloads/

 

tar -xvzf sphinx-2.0.1-beta.tar.gz
cd sphinx-2.0.1-beta
./configure –prefix=/usr/local/sphinx –with-mysql –with-iconv

 

备注:64位增加参数 –enable-id64


make && make install cd /usr/local/sphinx/etc/ cp sphinx.conf.dist sphinx.conf

 

继续阅读

Read: 4210

ImageImagick + PHP + Apache On WINDOWS

今天帮同事安装配置php_imagick,结果装是装上了apache也能正常启动,但是程序一new Imagick()就会导致Apache崩溃。

在google之后从Stack Overflow找到问题原因:

I’ve had the same issue today. You have to install version of Image Magick no higher than 6.6.4.0 – next builds are made using VC10 which seems to be incompatible with Apache VC9 + PHP5.3.x VC9.

 

ImageImagick dll for windows 在6.6.4以后用的都是VC10编译,所以不兼容vc9编译的php,虽然apache能正常启动,但是new Imagick的时候会导致apache崩溃。

解决办法就是安装低版本的ImageImagick

下载地址:http://image_magick.veidrodis.com/image_magick/binaries/

 

参考资料:

http://stackoverflow.com/questions/8608426/imagick-crash-with-php-5-3

http://www.elxsy.com/2009/07/installing-imagemagick-on-windows-and-using-with-php-imagick/

Read: 1169