首页

显示标签为“Mysql”的博文。显示所有博文
显示标签为“Mysql”的博文。显示所有博文

2010年10月31日星期日

PHP MYSQL JQUERY JS 编写二级联动下拉列表

由于本文带源代码的原因在此没法正常显示

请浏览www.wackguild.tk 我的博客浏览

我的百度空间也有http://hi.baidu.com/dszul

2010年6月24日星期四

用php中的popen函数实现php的并发处理

用php中的popen函数实现php的并发处理:当我们需要调用一个比较耗时外部资源时使用popen这个函数, 最常见的就是从外部API获取相关内容.使用方法:
1. 建立外部资源脚本。 如示例中使用t.sh。 当然, 也可以直接使用curl等命令行2. 准备好参数, 提供给pipe脚本
2. 使用popen调用脚本。 调用之后,就不用关心了。
3. 开始其他的和pipe不相关的逻辑处理
4. 其他处理完成之后, 使用fgets等方式,
获取popen的数据
php程序:
# get argument for pipe here if it has.
#start pipe
echo ’call popen start: ’. date("H:i:s"), "\n";
$pipe = popen(dirname(__FILE__) . ’/t.sh’, ’r’);
echo ’call popen end: ’. date("H:i:s"), "\n";
#Other code here
sleep(5);
echo "Here is my code. time: " . date("H:i:s"), "\n";
#read pipe result
while ($s = fgets($pipe,1024)) {
echo $s;
}
pipe脚本:
echo 1, `date +%T`;
sleep 1;
echo 2, `date +%T`;
sleep 10;
echo 3, `date +%T`;
输出结果:
call popen start: 10:16:40
call popen end: 10:16:40
Here is my code. time: 10:16:451, 10:16:402, 10:16:413, 10:16:51
结论, 我们有三个sleep。
php中一个 sleep 5,sh中两个sleep, 10+1如果使用串行的方式, 那么用时应该是10+1+5 = 16秒。而使用pipe方式, 用时仅为:max(php, pipe) = max(5,11) = 11秒。

2010年6月10日星期四

emacs自定义工具栏

emacs自定义工具栏
(setq tool-bar-map (make-sparse-keymap))
要自定义工具栏,只需要修改tool-bar-map这个变量就可以了,一般我们可以用tool-bar-add-item这个函数来往tool- bar-map里添加工具项。
tool-bar-add-item的原型是这样的:
(tool-bar-add-item icon def key &rest props)
参数icon设置工具图标,emacs的工具栏可以使用XPM和PBM格式的图标,当emacs 有libxmp支持时会使用XPM格式,没有libxmp库时会寻找PBM格式的图标(Info上还说有XBM格式,我没搞清楚什么情况下使用XBM)。

在etc/images目录下可以看到emacs自带的图标一般都同时有XPM和PBM两种格式,就是为了在没有libxmp库时也能显示工具栏,因为如果我们只有xpm格式的图标而没有libxmp库时,emacs就不在工具栏上显示这个项了。所以我们自己做图标时最好XPM和PBM都准备一份。

icon参数的类型是字符串,只需要传主文件名就可以,扩展名emacs会自己加,比如对图标文件semantic.xpm写成”semantic”。

emacs会在image-load-path下查找图标文件,这个变量的值默认为(“…/etc/images/” data-directory load-path),就是说它除了查找image目录外还会查找所有的load-path,所以如果我们有自己的图标目录,把它加到image- load-path或者load-path都可以。

图标的大小好像没有限制,emacs本身使用的图标是24×24像素的,如果使用了比它大的图标,整个工具栏会自动扩大。

参数def设置这个工具项被按下的执行什么命令,它的格式跟global-set-key里的command格式是一样的。

参数key用来给这个工具项指定一个key,这个key用于唯一标识这个工具项,所以在同一个keymap里key不能重复。

剩下的参数可以设置一些属性项,具体可以设置哪些属性可以看Info > elisp > Keymaps > Menu Keymaps > Defining Menus > Extended Menu Items。常用的几个属性有:

* :enable 这个属性的值是一个表达式,emacs对这个表达式求值,如果值为nil时,这个工具项会被禁用。
* :visible 这个属性控制这个工具项是否显示,它的类型与:enable是一样的。
* :help 这个属性类型是字符串,当鼠标在工具项上停留时会显示这个字符串。

其余的属性我没用过,也没仔细研究它们用来干什么。

举例来说,如果要添加一个工具项用来执行gdb命令,并且只有在c-mode或者c++-mode时才让它有效,可以这样:
(tool-bar-add-item "gud/run" 'gdb 'gdb
:enable '(memq major-mode '(c++-mode c-mode)))

这样会把gdb这个工具项添加到默认工具栏的最后,如果不想要emacs默认的工具栏,可以先执行(setq tool-bar-map (make-sparse-keymap))把默认的工具栏清空。

2010年5月29日星期六

Mysql数据库操作

创建数据库:create database name;
查看数据库:show databases;(查看所有数据库)
选择数据库:use db_admin;
删除数据库:drop database name;

------------------------------------------
Mysql 数据表操作:
------------------------------------------
创建数据表:create table name(表名);
    如:create table tb_admin(
        id int auto_increment primary key,
        user varchar(30)not null,
        password varchar(30) not null,
        createtime datetime);
查看表结构:show columns from name(表名);
    如:show columns from tb_admin;
查看表信息:desc name(表名) id;
    如:desc tb_admin id;
修改表结构:alter table name(表名) add email varchar(50)
        not null,modify user varchar(40);
重命名表:rename table name(表名) to newname(新表名);
      如:rename table tb_admin to tb_user;
删除数据表:drop table name(表名);
    如:drop table tb_admin;
------------------------------------------
Mysql语句操作
------------------------------------------
插入记录:insert into (表名)tb_admin(user,password,email,createtime)
        values('tsoft','111','bb.qnyd@gmail.com','2009-8-3 17:00:12');
查询记录:select id,user,password,email from tb_admin where id=1;
    select * from tb_admin(表名);
修改记录:update name(表名) set password='(密码)' where user='(名字)';
    如:update tb_admin set password='520300' where user='tsoft';
删除记录:delete from name(表名) where user='(条件)';
    如:delete from tb_admin where user='tsoft';