Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->CGI ->正文

perl与Mysql连接

来源:Linuxdby.com 作者:Webmaster 时间:2007-04-28 点击: [收藏] [投稿]

感谢jacques@solucorp.qc.ca提供这个信息。

Linux-Alpha注意事项
在Linux-Alpha上的大问题仍然是在这个平台上的glibc的线程有一些问题。你应该从得到你能找到的最新glibc版本开始。

注意:在你运行任何使用线程的程序之前(象mysqld、thr_alarm或thr_lock),你应该增减共享存储器的限制(用ulimit)。如果你忘记这样做,MySQL基准测试已知是失败的!

用下列命令配置MySQL:

shell> CC=gcc CCFLAGS="-Dalpha_linux_port"
CXX=gcc CXXFLAGS="-O3 -Dalpha_linux_port -felide-constructors -fno-exceptions -fno-rtti"
./configure --prefix=/usr/local/mysql
试试编译mysys/thr_lock和mysys/thr_alarm,测试这些程序的运行!(不用参数调用每一个,如果一切正常,每个应该以test_succeeded结束。)

在安装MySQL以后,在safe_mysqld里去掉ulimit命令的注释,并加入选项以增加共享存储器。

注意对MySQL来说,Linux-Alpha仍然是一个alpha质量的平台。用最新glibc,你有一个让它工作的很好机会。

如果你用信号方面的问题(MySQL出人意料地在高负载下死掉),你可能找到了一个线程和信号有关的OS错误。在这种情况下,你可以告诉MySQL如下配置以不使用信号:

shell> CFLAGS=-DDONT_USE_THR_ALARM
CXXFLAGS=-DDONT_USE_THR_ALARM
./configure …
这不影响MySQL性能,但是有副作用,就是你不能用mysqladmin kill或mysqladmin shutdown杀死在一个连接上“睡眠”的客户。相反,当客户发出下一个命令时,它将死掉。

MkLinux 注意
MySQL应该能工作在有最新glibc包的MkLinux上(用glibc2.0.7测试过)。

Qube2 Linux注意事项
为了让MySQL在Qube2上工作,(Linux Mips),你需要最新的glibc库(glibc-2.0.7-29C2已知可工作)。你也必须使用egcsC++编译器(egcs-1.0.2-9或更新)。

Alpha-DEC-Unix 注意事项
当在Digital UNIX下编译线程程序时,文档推荐对于cc和cxx使用-pthread选项而且库文件用-lmach -lexc(除了-lpthread外)。你应该象下面这样运行configure:

shell> CC="cc -pthread" CXX="cxx -pthread -O"
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"
当编译mysqld时,你可能看见这样一些警告:

mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'
你可以安全地忽略这些警告,他们的发生是因为configure只能检测出错误,而不是警告。

如果你直接从命令行启动服务器,当你退出时,你可能有死掉的问题。(当你退出时,你的重要进程收到一个SIGHUP信号),如果如此,试着象这样启动服务器:

shell> nohup mysqld [options] &
nohup使得跟随它的命令忽视从终端发来的任何SIGHUP信号了。另外,通过运行safe_mysqld启动服务器,它为你使用nohup调用mysqld。

Alpha-DEC-OSF1注意事项
如果你有编译问题并安装了DECCC和gcc,尝试这样运行configure:

shell> CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3
./configure --prefix=/usr/local/mysql
如果你得到“c_asm.h”文件的问题,你可以创建并使用一个“哑(dummy)”“c_asm.h”文件:

shell> touch include/c_asm.h
shell> CC=gcc CFLAGS=-I./include
CXX=gcc CXXFLAGS=-O3
./configure --prefix=/usr/local/mysql
在OSF1 V4.0D和编译器"DEC C V5.6-071 on Digital UNIX V4.0 (Rev. 878)" 上,编译器有了一些奇怪的行为(未定义asm标志)。/bin/ld好象也被破坏(当链接mysqld时,发生_exit undefined问题)。在这个系统上,从OSF 4.0C的版本替换了/bin/ld后,我们设法用下列configure命令行编译MySQL,:

shell> CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
用Digital编译器“C++ V6.1-029”,下列命令应该工作:

CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql --with-low-memory --enable-large-files
--with-mysqld-ldflags=-all-static --disable-shared --with-named-thread-libs="-lmach -lexc -lc"
在OSF1的某些版本中,alloca()函数被破坏,通过删除定义'HAVE_ALLOCA'的“config.h”的行更正它。

alloca()函数也可能在/usr/include/alloca.h里面有一个不正确的原型,源于此的警告可以忽略。

configure将自动地使用下列线程库: --with-named-thread-libs="-lpthread -lmach -lexc -lc"。

当使用gcc时,你也可以试试这样运行configure:

shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ……
如果你的信号有问题(MySQL出人意料地在高负载下死掉),你可能找到了一个线程和信号有关的OS错误。在这种情况下,你可以告诉MySQL如下配置以不使用信号:

shell> CFLAGS=-DDONT_USE_THR_ALARM
CXXFLAGS=-DDONT_USE_THR_ALARM

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:使用Perl编写CGI时需要注意的几个问题   下一篇:如何在win98/NT上添加perl语言的各种模块

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号