最近好忙,没时间更新博客了
一到年底就忙,项目一个接着一个来,而且都很紧急,检索系统的QL部分的设计开发,商业账户系统,自助置顶系统,PPC系统……基本每个周末都加班,博客也没时间更新了,接下来计划找个闲下来的时间,把近期的工作收获做做总结。前两天去订车了,红色1.8se科鲁兹,以后俺也是有车一族了,除了养自己还得养车咯。毕业一年后靠自己的实力买车,还是小有成就感滴,接下来要继续努力。到时候会把我家小科照片放上来,留个做做纪念,嘿嘿。
Linux下c++连接sql server FreeTDS配置笔记
最近做一个项目,需要在Linux下通过C++连接sql server 2005,这里列出FreeTDS配置笔记,以作分享和留存。
1. 编译安装FreeTDS
[cc lang="text"]
[root@localhost software]# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
[root@localhost software]# tar zxvf freetds-stable.tgz
[root@localhost software]# cd freetds-0.82/
[root@localhost freetds-0.82]# ./configure –prefix=/usr/local/freetds –with-tdsver=8.0 –enable-msdblib
[root@localhost freetds-0.82]# make && make install
[root@localhost freetds-0.82]# cd ../
[/cc]
2. 修改配置文件
[cc lang="text"]
[root@localhost software]# vi /usr/local/freetds/etc/freetds.conf
[/cc]
在该文件添加如下内容:
[cc lang="text"]
[test]
host = 192.168.1.143
port = 1433
tds version = 8.0
client charset = UTF-8
[/cc]
3. 测试连接,如果出现1>则说明成功
[cc lang="text"]
[root@localhost software]# /usr/local/freetds/bin/tsql -S test -U test -P test
locale is "zh_CN.UTF-8″
locale charset is "UTF-8″
1 >
2 >quit
[/cc]
4. 编写c++代码测试
[cc lang="text"]
[root@localhost software]# vi test.cc
#include
#include
#include
#include
#include
#include
int main(void)
{
//初始化db库
dbinit();
//设置数据库信息
LOGINREC *loginrec = dblogin();
DBSETLUSER(loginrec, "test");
DBSETLPWD(loginrec, "test");
// 设置UTF-8编码
DBSETLCHARSET(loginrec, "UTF-8″);
//连接数据库
DBPROCESS *dbprocess = dbopen(loginrec, "192.168.1.147:1433″);
if(dbprocess == FAIL)
{
printf("Connect fail\n");
return 0;
}
printf("Connect success\n");
//打开test数据库
if(dbuse(dbprocess, "test") == FAIL)
{
printf("Open database fail\n");
}
else
{
printf("Open database success\n");
}
//查询test表
dbcmd(dbprocess, "select id,test from test");
if(dbsqlexec(dbprocess) == FAIL)
{
printf("Query table error\n");
}
DBINT result_code;
char id[1024];
char value[1024];
while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){
if (result_code == SUCCEED){
dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)id);
dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)value);
while (dbnextrow(dbprocess) != NO_MORE_ROWS){
printf("id=%s\n", id);
printf("value=%s\n", id);
}
}
}
//关闭数据库连接
dbclose(dbprocess);
return 0;
}
[/cc]
5. 编译test.cc,注意编译前需要导入环境变量,否则会编译失败。
[cc lang="text"]
[root@localhost software]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/
[root@localhost software]# g++ test.cc /usr/local/freetds/lib/libsybdb.so.5.0.0 -o test
[root@localhost software]# ./test
Connect success
Open database success
id=1
value=test
[/cc]
本站文章皆为原创,如需转载,请注明出处:http://blog.liubijian.com/linux_c_connect_sql_server_by_freetds.html和本站声明,谢谢!
php与memcached服务器交互的分布式实现源码分析[memcache版]
前段时间,因为一个项目的关系,研究了php通过调用memcache和memcached PECL扩展库的接口存储到分布式缓存服务器的机制,在此做我根据他们各自的源码进行分析,希望能对这方面感兴趣的人有些帮助。
本篇文章我会针对php和memcache扩展库的交互根据源码展开分析。
PHP调用memcache的接口通常会是如下过程:
[cc lang="php"]
< ?php
$mmc = new Memcache();
$mmc->addServer(‘node1′, 11211);
$mmc->addServer(‘node2′, 11211, MemcacheConfig::MEMCACHE_PERSISTENT, 2);
$mmc->set(‘key’, ‘value’);
echo $mmc->get(‘key’);
$mmc->delete(‘key’);
[/cc]
短短几行代码,一个缓存key的生命周期就已经完整层现。从Memcache的初始化,到addServer添加两个服务器节点,接着set一个key到服务器上,然后get到这个key输出,最后delete这个key。在这个生命周期里,Memcache在底层究竟做了哪些事情,保证了数据存储服务器的均匀分布,数据的完整性?
接下来,我会根据上述生命周期的顺序,循序渐进的分析(由于主题是分布式算法的分析,所以接下来不相干的代码我会略去,很多分析我会直接备注在源码上)。
Read more…
php-cgi进程内存占用高的问题
这几天,部署好vps环境后,我发现一个现象,我的php-cgi进程的内存占用达到了30m左右,而公司的服务器单个进程基本就是12m左右的占用量,以下是内存占用情况:
经过一番配置的查找后发现,原来是加载了xapian.so导致了这个问题,关掉xapian.so后,内存的占用情况:
PHP HipHop实战之安装篇
背景:HipHop是Facebook在今年早些时候放出的一个php开源项目,主要的特征就是把php翻译成了c++执行,HipHop所带来的性能提升用Facebook官方博客上项目负责人赵海平的话说:
With HipHop we’ve reduced the CPU usage on our Web servers on average by about fifty percent, depending on the page. Less CPU means fewer servers, which means less overhead. This project has had a tremendous impact on Facebook.
HipHop的官网是http://github.com/facebook/hiphop-php,上面有说明了HipHop的安装步骤,但是我个人感觉那还是不够详细具体的,实际的安装过程中会碰到了不少问题。
在此我详细罗列出安装步骤和分享出解决所碰到问题的过程和方法,以便能帮助到那些喜爱php技术,想要了解HipHop的人,能对HipHop有更深层次的认识。
Read more…




