spawn-fcgi: no fastcgi application given

刚装完spawn-fcgi 起动会遇到这个错误. 修改 spawn-fcgi 起动脚本 spawn_fcgi_app 加个 php-cgi 地址,或在rc.conf 加上也一样

2009-08-16 · 1 分钟 · admin

开始学习python

原来一直想学这个,但是没有机会,在新项目中的聊天室,打算用python+flex+socket 来实现,效率还不知道,正好顺便学学 python ,看它的语法,感觉还是很简洁的,不过习惯php 了,老是想以 php 的写法来写,这个比较郁闷了!

2009-08-16 · 1 分钟 · admin

关于C和Python之间通信的方法

这些天在做一个项目,前端使用python来作,便于快速开发,底层使用C来写,效率高,速度快。这样就牵扯到二者之间的通信问题。我查了相关文档,发现有以下几种解决方式: 使用标准的数据表示形式,比如xml或者xdr,然后在C和python两端都有自己的相应的库,可以对这些数据进行解释,自然就可以通信了。 在C中定义一个结构对象,把它打包成二进制形式(python把它作为字符串来解释),然后使用python中的struct模块的pack函数来解析,这样就牵扯到一个解析格式串的问题,一个简单的方式是在c和python两端定义对应的两套数据结构,分别有自己的pack和unpack函数,它们可以对中间结果---二进制串,进行解析,这样就可以实现通信了。在python那一端还可以使用array模块,处理类型统一的数据,特别方便,有时候比用struct模块要爽! 使用一个xml文件将C中定义的结构都包含进去,然后在python那一端进行解析这个xml文件,自然就知道如何对每个C中的struct对象进行解析了,这样扩展性好一些。 使用第三方的库,我所知道的有boost.python和ctypes,具体怎样我也没有是用。 我在实现的时候使用了第2种方式,下面举个例子: 在c中有这样一个结构: typedef struct test_tag { int a; int b; }test_t; char* test_pack(test_t* ptr){ char * p=NULL; p = (char *) malloc(sizeof(test_t)); memcpy(p,ptr,sizeof(test_t)); return p; } test_t* test_unpack(char* ptr){ test_t* p=NULL; p=(test_t *)malloc(sizeof(test_t)); memcpy(p,ptr,sizeof(test_t)); return p; } 在python端有这样的对应数据结构: class test: format='2i' members=('a','b') def __init__(self): for item in test.members: self.__dict__[item]=-1 def pack(self,order='@'): return struct.pack(order+test.format,self.a,self.b) def pack2(self,order='@'): bin=array.array('l') for item in test.members: bin.append(self.__dict__[item]) if (sys.byteorder=='little' and order=='>') or (sys....

2009-08-16 · 1 分钟 · admin

FastCgi 翻译文档

同事业余时间翻译的,我把它整理了出来,其中绿色的是我没有使用默认值的参数。 IdleTimeout n (300 seconds) An idle fastcgi application will be terminated after IdleTimeout seconds. 空闲线程将在 n 秒后被终止。 IdleScanInterval n (120 seconds) The scan interval for idle fastcgi applications. 扫描空闲线程的时间间隔。 BusyTimeout n (300 seconds) a fastcgi application will be terminated if handing a single request longer than busy timeout. 一个线程被单独占用 n 秒后将被终止。 BusyScanInterval n (120 seconds) The scan interval for busy timeout fastcgi applications. 扫描繁忙线程的时间间隔。 ErrorScanInterval n (3 seconds) The scan interval for exit pending fastcgi applications....

2009-07-16 · 3 分钟 · admin

将svnserver 注册为系统服务

sc create svn binpath= “D:\soft\Subversion\bin\svnserve.exe –service -r E:\svn\local” displayname= “Subversion Server” depend= Tcpip start= auto 刚重装完系统记录一下,

2009-07-07 · 1 分钟 · admin

Thinkpad R61I 驱动下载及安装方法 for windows 2003

驱动下载方法:把下面的链接复制到浏览器地址栏后按回车 –> 鼠标左键单击页面中.exe结尾的连接 –> 在新弹出的窗口中选择“FTP”或“HTTP” –> 鼠标左键单击“I agree”后选择保存。 几点提醒: 1、请不要使用迅雷、快车等第三方下载工具下载驱动,会造成下载不完整无法安装。 2、请尽量按照下列驱动的排列的先后顺序安装。 3、设备管理中常见的未知设备一般为ACPI电源管理器和TPM安全芯片,如果出现未知设备,请首先尝试安装其驱动。 4、GHOST安装的系统有可能存在驱动无法安装的情况,建议不要使用GHOST安装系统。 5、使用GHOST安装系统后如出现小红帽不可用的情况,请在设备管理器中删除“鼠标和其它指针设备”下面有感叹号的设备,然后重启系统,小红帽即可使用。 1,INTEL主板芯片组(设备管理器中显示为:SM BUS控制器) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67818 默认释放路径C:\DRIVERS\WIN\INTELINF\INFINST_AUTOL.EXE 2,NVIDIA显卡驱动:TYPE为( 7742, 8918)的R61I请安装此款显卡驱动:NVIDIA Quadro NVS 140M / Quadro FX 570M显卡 (设备管理器中显示为:VGA视频控制器) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67924 默认释放路径C:\DRIVERS\WIN\DISPLAY\SETUP.EXE 3,INTEL显卡驱动:TYPE为(7650, 7732, 8932, 8943)的R61I请安装此款显卡驱动:Intel X3100集成显卡(设备管理器中显示为:VGA视频控制器) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67838 默认释放路径C:\DRIVERS\WIN\DISPLAY\SETUP.EXE 4,INTEL千兆以太网卡驱动:TYPE为(7732, 7742, 8918)的R61I请安装INTEL千兆以太网卡 (设备管理器中显示为:以太网控制器) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-67829 默认解压路径 C:\DRIVERS\WIN\ETHERNET\APPS\SETUP\SETUPBD\Win32\SetupBD.exe 或C:\DRIVERS\WIN\ETHERNET\APPS\PROSETDX\Win32\DxSetup.EXE 5,Broadcom千兆以太网卡驱动:TYPE为(7650,8942, 8943)的R61I请安装Broadcom千兆以太网卡(设备管理器中显示为:以太网控制器) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-58618 默认解压路径 C:\DRIVERS\WIN\ETHERNET\WINXP\IA32 ,在设备管理器中以太网控制器上点右键选择更新驱动程序->指定位置安装,指定到此目录搜索安装。 或C:\DRIVERS\WIN\ETHERNET\TOOLS\DRVINST\IA32\SETUP.EXE 6,Thinkpad 11b/g无线网卡驱动:TYPE为(7650, 7732, 7742, 8943)的R61I请安装Thinkpad 11b/g无线网卡(设备管理器中显示为:以太网控制器)(部分R61I没有配置无线网卡,不需要安装此驱动程序,请继续安装其他驱动程序) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52527 默认释放路径C:\DRIVERS\WIN\WLLANATH\SETUP.EXE 7,INTEL无线网卡驱动:TYPE为(8918)的R61I请安装INTEL无线网卡 (设备管理器中显示为:网络适配器)(部分R61I没有配置无线网卡,不需要安装此驱动程序,请继续安装其他驱动程序) http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-62875 默认释放路径C:\DRIVERS\WIN\WLANINT2\XP\Apps\x32\iProInst.EXE 8,声卡KB888111补丁(PCI-DEVICE,KB888111) http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid;=MIGR-65456 默认释放路径:打开下载页面选择第五个简体中文版下载kb888111xp2chs.exe(如您安装的是其他语言版本的WINDOWS系统,请选 择相应语言版本下载安装),下载完后直接双击安装。注意:只有先安装KB888111补丁,才能安装声卡和调制解调器驱动。 9,SoundMax声卡驱动:(TYPE为7732, 7738, 7742, 7743, 7755, 8914, 8918, 8942, 8943的R61I请安装此声卡驱动程序)(设备管理器中显示为:High Definition Audio总线上的音频设备)...

2009-07-07 · 1 分钟 · admin

md5crypt

php 版 md5crypt postfix extmail 使用 function md5crypt ($pw) { $MAGIC = "$1$"; $rand = substr (md5 (mt_rand ()), 0, 8); return crypt($pw, '$1$'.$rand.'$'); }

2009-07-06 · 1 分钟 · admin

加快innodb 关闭

mysql> set global innodb_max_dirty_pages_pct = 0; 过半小时再shutdown就快了

2009-07-03 · 1 分钟 · admin

W3C DOM - {setAttribute()}

setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。 1、setAttribute()的差异 我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题。 var bar = document.getElementById("foo"); bar.setAttribute("onclick", "javascript:alert('This is a test!');"); 这里利用setAttribute指定Element的onclick属性,简单,很好理解。但是IE不支持,IE并不是不支持setAttribute这个函数,而是不支持用setAttribute设置某些属性,例如对象属性、集合属性、事件属性,也就是说用setAttribute设置style和onclick 这些属性在IE中是行不通的。为达到兼容各种浏览器的效果,可以用点符号法来设置Element的对象属性、集合属性和事件属性。 document.getElementById("foo").className = "fruit"; document.getElementById("foo").style.cssText = "color: #00f;"; document.getElementById("foo").style.color = "#00f"; document.getElementById("foo").onclick= function () { alert("This is a test!"); } 2、关于class和className class 属性在W3C DOM中扮演着很重要的角色,但由于浏览器差异性仍然存在。使用setAttribute(“class”, vName)语句动态设置element的class属性在firefox中是行的通的,在IE中却不行。因为使用IE内核的浏览器不认识 “class”,要改用"className";同样,firefox 也不认识"className"。所以常用的方法是二者兼备: element.setAttribute("class", vName); element.setAttribute("className", vName); // for IE 3、cellspacing和cellpadding 虽然在CSS中存在与cellpadding和cellspacing这两个属性等价的样式属性padding和 border-spacing。然而,浏览器对这些样式属性支持的不一致,有时仍会使用cellpadding和 cellspacing来调整表格的间距。不过,在firefox中有效的setAttribute(“cellpadding”, value)到了IE下就不行了,必须改成cellPadding才可以(注意:p大写)。幸好firefox也支持setAttribute(“cellPadding”, value)。所以二者兼容的代码是: element.setAttribute("cellSpacing", value); element.setAttribute("cellPadding", value);

2009-06-26 · 1 分钟 · admin

rpmbuild command not found

rpmbuild command not found 安装 rpm-build 组件 yum install rpm-build

2009-06-24 · 1 分钟 · admin

Extmail1.1登录显示:Unix::Syslog not found

Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext;::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 87. 没装perl-Unix-Syslog包, 安装方法 perl -MCPAN -e shell cpan>install Unix::Syslog

2009-06-23 · 1 分钟 · admin

spawn-fcgi 独立出来了,不错

原来一直用php-fpm ,但是更新好像不太及时,上次改了半天ports 才通过编译 /usr/ports/www/spawn-fcgi 以后可以用这个了,但重要载入php.ini 要重起

2009-06-19 · 1 分钟 · admin

PHP对象相互引用的内存溢出

使用脚本语言最大的好处之一就是可利用其拥有的自动垃圾回收机制(释放内存)。你不需要在使用完变量后做任何释放内存的处理,PHP会帮你完成。 当然,我们可以按自己的意愿调用 unset() 函数来释放内存,但通常不需要这么做。 不过在PHP里,至少有一种情况内存不会得到自动释放,即便是手动调用 unset()。详情可考:http://bugs.php.net/bug.php?id=33595。 问题症状 如果两个对象之间存在着相互引用的关系,如“父对象-子对象”,对父对象调用 unset() 不会释放在子对象中引用父对象的内存(即便父对象被垃圾回收,也不行)。 有些糊涂了?我们来看下面的这段代码: bar = new Bar($this); } } class Bar { function __construct($foo = null) { $this->foo = $foo; } } while (true) { $foo = new Foo(); unset($foo); echo number_format(memory_get_usage()) . "\n"; } ?> 运行这段代码,你会看到内存使用率越来越高越来越高,直到用光光。 …33,551,61633,551,97633,552,33633,552,696PHP Fatal error: Allowed memory size of 33554432 bytes exhausted(tried to allocate 16 bytes) in memleak.php on line 17对大部分PHP程序员来讲这种情况不算是什么问题。 可如果你在一个长期运行的代码中使用到了一大堆相互引用的对象,尤其是在对象相对较大的情况下,内存会迅速地消耗殆尽。 Userland解决方案 虽然有些乏味、不优雅,但之前提到的 bugs.php.net 链接中提供了一个解决方案。 这个方案在释放对象前使用一个 destructor 方法以达到目的。Destructor 方法可将所有内部的父对象引用全部清除,也就是说可以将这部分本来会溢出的内存释放掉。...

2009-06-10 · 1 分钟 · admin

js控制 overflow-y 属性

原来是可以用js控制的,原来还以为不行呢, document.getElementById('overflow').style.overflowY = 'scroll';

2009-06-07 · 1 分钟 · admin

nginx freebsd 官方网站优化

OS & Hardware FreeBSD 7.1 AMD64, dual-core CPU 4GB RAM Purpose Web server & reverse proxy Load description 45K inactive keep-alive connections HTTP request is about 5,000 req/s, mostly small static files, all are cached by VM System config /boot/loader.conf: vm.kmem_size=1844M kern.maxbcache=64M kern.ipc.maxpipekva=4M /etc/sysctl.conf: kern.ipc.nmbjumbop=192000 kern.ipc.nmbclusters=229376 kern.ipc.maxsockets=204800 net.inet.tcp.maxtcptw=163840 kern.maxfiles=204800 kern.ipc.somaxconn=4096 Retrieved from “http://wiki.nginx.org/FreeBSDOptimizations"

2009-05-31 · 1 分钟 · admin