这次碰到个问题,写的php代码访问时总是超时,凭经验判断是数据库问题。
但是逐步调试下去,发现是mysql_real_escape_string导致超时。
后来才发现,php文档里写了,这样的函数是需要数据库连接的,我这个调用是在数据库连接建立之前,所以php一直尝试获取最近的连接,但是又没有,结果就超时了。
同样的问题存在mysql_开头的函数中。
另外的问题是mysql_insert_id没有返回值,发现是之前的insert操作执行后马上关闭了连接,导致再打开一个新连接再调用mysql_insert_id就会没有返回值。
所以mysql_insert_id应该与insert 语句使用同一个连接。
Continue reading mysql_函数引出的问题
这几天忙的手都打搅了,稀里糊涂的某个项目要用Perl,尝试了一下,windows下配置apache和Perl执行CGI还是很简单的。
首先要有Perl环境,每个perl cgi文件的顶部都有个路径
#!d:/perl/bin/perl.exe
这里就是说明使用哪里的perl引擎来执行此脚本,所以刚开始的同学很能copy个helloworld放在那里,结果运行报错,像apache日志里:The system cannot find the path specified. : couldn't create child process
这种情况下就要检查代码第一行与实际安装的Perl环境是否一致了。
windows下使用ActivePerl是最好的了。安装我没碰到什么问题,最好让其建立环境变量。
然后是Apache的配置:
也很简单,只要两点:
1 : AddHandler cgi-script .cgi .pl 这个是需要的
2:Options execCGI 这个也是需要的
将这两个设置配置到文件夹下,则可以和php handler同时使用。
另外较“普遍”的方式是使用
ScriptAlias /cgi-bin/ "D:/cgi-bin/" 需要反注释
AddHandler cgi-script .cgi .pl 需要反注释,在<IfModule mime_module>中
Options execCGI 在配置的文件夹中。
其中/cgi-bin/可以改为你想要的名字,这样做会将所有此apache服务的站点中以/cgi-bin/开头的请求转为D:/cgi-bin/中的cgi文件来执行,比如
apache配置了localhost:8001,localhost:8002两个站点,那么请求
localhost:8001/cgi-bin/test.pl -->执行D:/cgi-bin/test.pl
localhost:8002/cgi-bin/test.php -->执行D:/cgi-bin/test.php
localhost:8002/cgi-bin/test.html -->执行D:/cgi-bin/test.html
不管扩展名是什么,都认为是cgi脚本。
参见:
http://programmingnote.com/blog/?p=28 中文
http://www.thesitewizard.com/archive/addcgitoapache.shtml 这里最详细
Continue reading Perl web开发 windows下配置
使用bind作为dns server.
首先检查服务器是否已经安装bind: http://linux.vbird.org/linux_server/0350dns.php#what_software
rpm -qa | grep '^bind'
没有的话安装:
http://ftp.isc.org/isc/bind9/cur/9.7/doc/arm/Bv9ARM.html
cd /opt/zk
wget http://ftp.isc.org/isc/bind9/cur/9.7/bind-9.7.6-P2.tar.gz
tar zxvf bind-9.7.6-P2.tar.gz
cd bind-9.7.6-P2
./configure --prefix=/usr/local/named --enable-threads && make && make install
参见:
http://linux.vbird.org/linux_server/0350dns.php#what_software
http://www.cdnunion.com/htmldata/11/7/2006_04/DNSPeiZhi-BINDAnZhuangPeiZhiQuanGuoCheng107_1.html
Continue reading linux下dns server安装配置