在MySQL字段中使用逗号分隔符

大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性。

  • 被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符
  • 这个字段所属的表与这个字段关联的表,一定是一对多的关系

比如下面这个表结构所代表的content与tag这两个对象

mysql> SELECT * FROM content;
+----+------+
| id | tags |
+----+------+
|  1 | 1,2  |
|  2 | 2,3  |
+----+------+
2 rows in set (0.01 sec)
 
mysql> SELECT * FROM tag;
+----+-------+
| id | name  |
+----+-------+
|  1 | php   |
|  2 | mysql |
|  3 | java  |
+----+-------+
3 rows in set (0.00 sec)

Read the rest of this entry »

Posted at Feb 23rd | 23 comments | Filed Under: 信息技术探讨 read on

在nginx上运行cgi程序

我们用到的很多开源程序比如mailman, nagios等等,都有WEB端管理界面。在那个Apache一家独大的年代,这个问题可以很好解决,因为apache本身可以运行cgi程序。但随着nginx服务器的大规模应用,而恰好nginx又没有cgi模块,所以我们不得不采用一些变通的手段来解决它。

在网上广为流传的解决方法是一个老外写的perl脚本,但这个脚本本身有很多问题,而且需要在后台启动一个守护进程,本人对用perl写的网络服务守护进程的稳定性很怀疑,在看了它的代码后,发现用PHP即可很好的解决这个问题。

首先我们要明白的是CGI其实本质上就是一个普通的二进制程序,你可以在后台直接运行它。而服务器要做的事就是将WEB传递的变量作为参数传递给这个程序并执行,而将执行返回的结果显示到页面上。

明白了这个道理,我们就可以开始着手解决这个问题了。其过程无非就是将PHP作为一个proxy,使其运行指定的程序,并把程序输出结果echo出来。

那么首先第一步,我们就需要把原来的cgi请求全部转发到指定的php上,这一点在nginx里用rewrite就可以很简单的做到。我们把这个PHP脚本命名为cgi.php,把它随便放到一个你认为合适的位置,然后用rewrite将后缀为cgi的请求都转发到cgi.php上。以下为参考的配置格式

Read the rest of this entry »

Posted at Jul 22nd | 14 comments | Filed Under: 编程开发 read on

About

Name:祁宁(Qi Ning)
MSN:qining-china#hotmail.com
G-talk:magike.net#gmail.com

Projects