ÈÕÀú

« 2008-08-21  
ÈÕ Ò» ¶þ Èý ËÄ Îå Áù
     12
3456789
10111213141516
17181920212223
24252627282930
31      

×îÐÂÀ´¿Í

ͳ¼ÆÐÅÏ¢

  • ·ÃÎÊÁ¿: 988
  • ÈÕÖ¾Êý: 14
  • ͼƬÊý: 1
  • ½¨Á¢Ê±¼ä: 2008-01-07
  • ¸üÐÂʱ¼ä: 2008-04-17

RSS¶©ÔÄ

ºÇºÇ ¹²Í¬Ñ§Ï°

ÎÒµÄ×îÐÂÈÕÖ¾

  • ÈçºÎʵÏÖÁ½Ì¨MySQLÊý¾Ý¿âÊý¾ÝµÄͬ²½

    2008-4-17

    ×ö¿ª·¢µÄʱºòÒª×öMysqlµÄÊý¾Ý¿âͬ²½£¬Á½Ì¨°²×°Ò»ÑùµÄϵͳ£¬¶¼ÊÇFreeBSD5.4£¬°²×°ÁËApache 2.0.55ºÍPHP 4.4.0£¬MysqlµÄ°æ±¾ÊÇ4.1.15£¬¶¼ÊÇĿǰ×îеİ汾¡£

    1. °²×°ÅäÖÃ

    Á½Ì¨·þÎñÆ÷£¬·Ö±ð°²×°ºÃMysql£¬¶¼°²×°ÔÚ /usr/local/mysql Ŀ¼Ï£¨°²×°²½ÖèÊ¡ÂÔ£¬Çë²Î¿¼Ïà¹ØÎĵµ£©£¬Á½Ì¨·þÎñÆ÷µÄIP·Ö±ðÊÇ192.168.0.1ºÍ192.168.0.2£¬ÎÒÃǰÑ192.168.0.1×÷ΪmasterÊý¾Ý¿â£¬°Ñ192.168.0.2×÷Ϊslave·þÎñÆ÷£¬ÎÒÃDzÉÓõ¥Ïòͬ²½µÄ·½Ê½£¬¾ÍÊÇmasterµÄÊý¾ÝÊÇÖ÷µÄÊý¾Ý£¬È»ºóslaveÖ÷¶¯È¥masterÄĶùͬ²½Êý¾Ý»ØÀ´¡£

    Á½Ì¨·þÎñÆ÷µÄÅäÖÃÒ»Ñù£¬ÎÒÃǰѹؼüµÄÅäÖÃÎļþ¿½±´Ò»Ï£¬Ä¬ÈϵÄÅäÖÃÎļþÊÇÔÚ /usr/local/mysql/share/mysqlĿ¼Ï£¬·Ö±ðÓÐ my-large.cnf, my-medium.cnf, my-small.cnfµÈ¼¸¸öÎļң¬ÎÒÃÇÖ»ÊDzâÊÔ£¬Ê¹ÓÃmy-medium.cnf¾ÍÐÐÁË¡£mysql°²×°Íêºó£¬Ä¬ÈϵÄÅäÖÃÎļþÊÇÖ¸¶¨ÔÚÊý¾Ý¿â´æ·ÅĿ¼Ïµģ¬ÎÒÃÇÓõÄÊÇ4.1.XµÄ£¬ËùÒÔÅäÖÃÎļþ¾ÍÓ¦¸ÃÔÚ /usr/local/mysql/var Ŀ¼Ï£¬ÓÚÊǰÑÅäÖÃÎļþ¿½±´¹ýÈ¥£º

    cp /usr/local/mysql/share/mysql/my-medium.cnf  /usr/local/mysql/var/my.cnf

    Á½Ì¨·þÎñÆ÷×öÏàͬµÄ¿½±´ÅäÖÃÎļþ²Ù×÷¡£

    2. ÅäÖÃMaster·þÎñÆ÷

    ÎÒÃÇÒª°Ñ192.168.0.1ÅäÖÃΪÖ÷mysql·þÎñÆ÷£¨master£©£¬ÄÇôÎÒÃǾÍÒª¿¼ÂÇÎÒÃÇÐèҪͬ²½ÄǸöÊý¾Ý¿â£¬Ê¹ÓÃÄǸöÓû§Í¬²½£¬ÎÒÃÇÕâÀïΪÁ˼òµ¥Æð¼û£¬¾ÍʹÓÃrootÓû§½øÐÐͬ²½£¬²¢ÇÒÖ»ÐèҪͬ²½Êý¾Ý¿âabc¡£

    ´ò¿ªÅäÖÃÎļþ£º

    vi /usr/local/mysql/var/my.cnf

    ÕÒµ½Ò»ÏÂÐÅÏ¢£º

    # required unique id between 1 and 2^32 - 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id = 1 //1Ϊmaster£¬2Ϊsalve

    Ìí¼ÓÁ½ÐУº

    sql-bin-update-same     //ͬ²½ÐÎʽ
    binlog-do-db = abc //Ҫͬ²½µÄÊý¾Ý¿â

    ÖØÆô192.168.0.1µÄmysql·þÎñÆ÷£º

    /usr/local/mysql/bin/mysqladmin shutdown
    /usr/local/mysql/bin/mysqld_safe --user=mysql &

    3. ÅäÖÃSlave·þÎñÆ÷

    ÎÒÃǵÄslave·þÎñÆ÷Ö÷ÒªÊÇÖ÷¶¯È¥master·þÎñÆ÷ͬ²½Êý¾Ý»ØÀ´£¬ÎÒÃDZ༭ÅäÖÃÎļþ£º

    vi /usr/local/mysql/var/my.cnf

    ÕÒµ½ÏÂÃæÀàËÆµÄÐÅÏ¢£º

    # required unique id between 1 and 2^32 - 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id = 1

    °ÑÉÏÃæµÄserver-idÐÞ¸ÄΪ2£¬Í¬Ê±Ìí¼ÓһЩÐÅÏ¢£º

    server-id                   = 2                        //±¾MysqlÊÇslave·þÎñÆ÷
    master-host = 192.168.0.1 //master·þÎñÆ÷µÄIP
    master-user = root //Á¬½Ómaster·þÎñÆ÷µÄÓû§
    master-password = '' //Á¬½Ómaster·þÎñÆ÷µÄÃÜÂë
    master-port = 3306 //Á¬½Ó¶Ë¿Ú
    master-connect-retry = 10 //ÖØÊÔ´ÎÊý
    replicate-do-db = abc //Ҫͬ²½µÄÊý¾Ý¿â
    log-slave-updates //ͬ²½µÄÐÎʽ

    ÖØÆô192.168.0.2µÄmysql·þÎñÆ÷£º

    /usr/local/mysql/bin/mysqladmin shutdown
    /usr/local/mysql/bin/mysqld_safe --user=mysql &

    4. ²âÊÔ°²×°

    Ê×ÏȲ鿴һÏÂslaveµÄÖ÷»úÈÕÖ¾£º

    cat /usr/local/mysql/var/xxxxx_err £¨xxxÊÇÖ÷»úÃû£©

    ¼ì²éÊÇ·ñÁ¬½ÓÕý³£, ¿´µ½ÀàËÆÕâÑùµÄÐÅÏ¢¾Í³É¹¦ÁË

    051031 11:42:40  mysqld started
    051031 11:42:41 InnoDB: Started; log sequence number 0 43634
    /usr/local/mysql/libexec/mysqld: ready for connections.
    Version: '4.1.15-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution
    051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log 'FIRST'
    at position 0, relay log './new4-relay-bin.000001' position: 4
    051031 11:43:21 [Note] Slave I/O thread: connected to master 'root@192.168.0.1:3306',
    replication started in log 'FIRST' at position 4

    ÔÚMaster²é¿´ÐÅÏ¢

    /usr/local/mysql/bin/mysql -u root

    ²é¿´master״̬£º

    mysql> show master status;

    ²é¿´MasterÏÂmysql½ø³ÌÐÅÏ¢£º

    mysql> show processlist;

    ÔÚslaveÉϲ鿴ÐÅÏ¢£º

    /usr/local/mysql/bin/mysql -u root

    ²é¿´slave״̬£º

    mysql> show slave status;

    ²é¿´slaveÏÂmysql½ø³ÌÐÅÏ¢£º

    mysql> show processlist;

    ÄãÔÙÔÚmasterµÄabc¿âÀィÁ¢±í½á¹¹²¢ÇÒ²åÈëÊý¾Ý£¬È»ºó¼ì²éslaveÓÐûÓÐͬ²½ÕâЩÊý¾Ý£¬¾ÍÄܹ»¼ì²é³öÊÇ·ñÉèÖóɹ¦¡£

    ×îºó£¬Èç¹ûÓÐÐËȤµÄ»°£¬¿ÉÒÔÑо¿Ò»ÏÂË«»÷Èȱ¸·Ý£¬»òÕßһ̨master£¬¶ą̀slaveµÄͬ²½ÊµÏÖ¡£

  • ¼ÓËÙPHP¶¯Ì¬ÍøÕ¾ MySQLË÷Òý·ÖÎöºÍÓÅ»¯

    2008-4-14

    Ò»¡¢Ê²Ã´ÊÇË÷Òý£¿

    Ë÷ÒýÓÃÀ´¿ìËÙµØÑ°ÕÒÄÇЩ¾ßÓÐÌØ¶¨ÖµµÄ¼Ç¼£¬ËùÓÐMySQLË÷Òý¶¼ÒÔB-Ê÷µÄÐÎʽ±£´æ¡£Èç¹ûûÓÐË÷Òý£¬Ö´ÐвéѯʱMySQL±ØÐë´ÓµÚÒ»¸ö¼Ç¼¿ªÊ¼É¨ÃèÕû¸ö±íµÄËùÓмǼ£¬Ö±ÖÁÕÒµ½·ûºÏÒªÇóµÄ¼Ç¼¡£±íÀïÃæµÄ¼Ç¼ÊýÁ¿Ô½¶à£¬Õâ¸ö²Ù×÷µÄ´ú¼Û¾ÍÔ½¸ß¡£Èç¹û×÷ΪËÑË÷Ìõ¼þµÄÁÐÉÏÒѾ­´´½¨ÁËË÷Òý£¬MySQLÎÞÐèɨÃèÈκμǼ¼´¿ÉѸËٵõ½Ä¿±ê¼Ç¼ËùÔÚµÄλÖá£Èç¹û±íÓÐ50000¸ö¼Ç¼£¬Í¨¹ýË÷Òý²éÕҼǼÖÁÉÙÒª±È˳ÐòɨÃè¼Ç¼¿ì500±¶¡£ Www@Chinaz@com

    ¼ÙÉèÎÒÃÇ´´½¨ÁËÒ»¸öÃûΪvtigerµÄ±í£º

    CREATE TABLE vtiger( vtigerid SMALLINT NOT NULL,
    name CHAR(50) NOT NULL );

     

    È»ºó£¬ÎÒÃÇÍêÈ«Ëæ»ú°Ñ1000¸ö²»Í¬nameÖµ²åÈëµ½vtiger±í¡£ÔÚÊý¾ÝÎļþÖÐnameÁÐûÓÐÈκÎÃ÷È·µÄ´ÎÐò¡£Èç¹ûÎÒÃÇ´´½¨ÁËnameÁеÄË÷Òý£¬MySQL½«ÔÚË÷ÒýÖÐÅÅÐònameÁÐ,¶ÔÓÚË÷ÒýÖеÄÿһÏMySQLÔÚÄÚ²¿ÎªËü±£´æÒ»¸öÊý¾ÝÎļþÖÐʵ¼Ê¼Ç¼ËùÔÚλÖõġ°Ö¸Õ롱¡£Òò´Ë£¬Èç¹ûÎÒÃÇÒª²éÕÒnameµÈÓÚ¡°Mike¡±¼Ç¼µÄvtigerid£¨SQLÃüÁîΪ¡°SELECT vtigerid FROM vtiger WHERE name='Mike';¡±£©£¬MySQLÄܹ»ÔÚnameµÄË÷ÒýÖвéÕÒ¡°Mike¡±Öµ£¬È»ºóÖ±½Óתµ½Êý¾ÝÎļþÖÐÏàÓ¦µÄÐУ¬×¼È·µØ·µ»Ø¸ÃÐеÄvtigerid£¨999£©¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬MySQLÖ»Ðè´¦ÀíÒ»¸öÐоͿÉÒÔ·µ»Ø½á¹û¡£Èç¹ûûÓС°name¡±ÁеÄË÷Òý£¬MySQLҪɨÃèÊý¾ÝÎļþÖеÄËùÓмǼ£¬¼´1000¸ö¼Ç¼£¡ÏÔÈ»£¬ÐèÒªMySQL´¦ÀíµÄ¼Ç¼ÊýÁ¿Ô½ÉÙ£¬ÔòËüÍê³ÉÈÎÎñµÄËٶȾÍÔ½¿ì¡£

     

    ¶þ¡¢Ë÷ÒýµÄÀàÐÍ

    MySQLÌṩ¶àÖÖË÷ÒýÀàÐ͹©Ñ¡Ôñ£º

    ÆÕͨË÷Òý£º

    ÕâÊÇ×î»ù±¾µÄË÷ÒýÀàÐÍ£¬¶øÇÒËüûÓÐΨһÐÔÖ®ÀàµÄÏÞÖÆ¡£ÆÕͨË÷Òý¿ÉÒÔͨ¹ýÒÔϼ¸ÖÖ·½Ê½´´½¨£º

    ´´½¨Ë÷Òý£¬ÀýÈçCREATE INDEX <Ë÷ÒýµÄÃû×Ö> ON tablename (ÁеÄÁбí)£»  

    ÐÞ¸Ä±í£¬ÀýÈçALTER TABLE tablename ADD INDEX [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí)£»

    ´´½¨±íµÄʱºòÖ¸¶¨Ë÷Òý£¬ÀýÈçCREATE TABLE tablename ( [...], INDEX [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí) )£»  

    ΨһÐÔË÷Òý£º

     

    ÕâÖÖË÷ÒýºÍÇ°ÃæµÄ¡°ÆÕͨË÷Òý¡±»ù±¾Ïàͬ£¬µ«ÓÐÒ»¸öÇø±ð£ºË÷ÒýÁеÄËùÓÐÖµ¶¼Ö»ÄܳöÏÖÒ»´Î£¬¼´±ØÐëΨһ¡£Î¨Ò»ÐÔË÷Òý¿ÉÒÔÓÃÒÔϼ¸ÖÖ·½Ê½´´½¨£º

    ´´½¨Ë÷Òý£¬ÀýÈçCREATE UNIQUE INDEX <Ë÷ÒýµÄÃû×Ö> ON tablename (ÁеÄÁбí)£»

    ÐÞ¸Ä±í£¬ÀýÈçALTER TABLE tablename ADD UNIQUE [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí)£»

    ´´½¨±íµÄʱºòÖ¸¶¨Ë÷Òý£¬ÀýÈçCREATE TABLE tablename ( [...], UNIQUE [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí) )£»

    Ö÷¼ü£º

    Ö÷¼üÊÇÒ»ÖÖΨһÐÔË÷Òý£¬µ«Ëü±ØÐëÖ¸¶¨Îª¡°PRIMARY KEY¡±¡£Èç¹ûÄãÔø¾­ÓùýAUTO_INCREMENTÀàÐ͵ÄÁУ¬Äã¿ÉÄÜÒѾ­ÊìϤÖ÷¼üÖ®ÀàµÄ¸ÅÄîÁË¡£Ö÷¼üÒ»°ãÔÚ´´½¨±íµÄʱºòÖ¸¶¨£¬ÀýÈç¡°CREATE TABLE tablename ( [...], PRIMARY KEY (ÁеÄÁбí) ); ¡±¡£µ«ÊÇ£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ýÐ޸ıíµÄ·½Ê½¼ÓÈëÖ÷¼ü£¬ÀýÈç¡°ALTER TABLE tablename ADD PRIMARY KEY (ÁеÄÁбí); ¡±¡£Ã¿¸ö±íÖ»ÄÜÓÐÒ»¸öÖ÷¼ü¡£  

     

    MySQL´Ó3.23.23°æ¿ªÊ¼Ö§³ÖÈ«ÎÄË÷ÒýºÍÈ«ÎļìË÷¡£ÔÚMySQLÖУ¬È«ÎÄË÷ÒýµÄË÷ÒýÀàÐÍΪFULLTEXT¡£È«ÎÄË÷Òý¿ÉÒÔÔÚVARCHAR»òÕßTEXTÀàÐ͵ÄÁÐÉÏ´´½¨¡£Ëü¿ÉÒÔͨ¹ýCREATE TABLEÃüÁî´´½¨£¬Ò²¿ÉÒÔͨ¹ýALTER TABLE»òCREATE INDEXÃüÁî´´½¨¡£¶ÔÓÚ´ó¹æÄ£µÄÊý¾Ý¼¯£¬Í¨¹ýALTER TABLE£¨»òÕßCREATE INDEX£©ÃüÁî´´½¨È«ÎÄË÷ÒýÒª±È°Ñ¼Ç¼²åÈë´øÓÐÈ«ÎÄË÷ÒýµÄ¿Õ±í¸ü¿ì¡£±¾ÎÄÏÂÃæµÄÌÖÂÛ²»ÔÙÉæ¼°È«ÎÄË÷Òý£¬ÒªÁ˽â¸ü¶àÐÅÏ¢£¬Çë²Î¼ûMySQL documentation¡£

    Èý¡¢µ¥ÁÐË÷ÒýÓë¶àÁÐË÷Òý

     

    Ë÷Òý¿ÉÒÔÊǵ¥ÁÐË÷Òý£¬Ò²¿ÉÒÔÊǶàÁÐË÷Òý¡£ÏÂÃæÎÒÃÇͨ¹ý¾ßÌåµÄÀý×ÓÀ´ËµÃ÷ÕâÁ½ÖÖË÷ÒýµÄÇø±ð¡£¼ÙÉèÓÐÕâÑùÒ»¸övtiger±í£º

     

    ÒÔÏÂΪÒýÓõÄÄÚÈÝ£º
    CREATE TABLE vtiger ( vtigerid
    SMALLINT NOT NULL AUTO_INCREMENT,
    firstname CHAR(50) NOT NULL, lastname CHAR(50) NOT NULL,
    age SMALLINT NOT NULL,
    townid SMALLINT NOT NULL, PRIMARY KEY (peopleid) );Chinaz~com

    ÏÂÃæÊÇÎÒÃDzåÈëµ½Õâ¸övtiger±íµÄÊý¾Ý£º  

    Õâ¸öÊý¾ÝƬ¶ÎÖÐÓÐËĸöÃû×ÖΪ¡°Mikes¡±µÄÈË£¨ÆäÖÐÁ½¸öÐÕSullivans£¬Á½¸öÐÕMcConnells£©£¬ÓÐÁ½¸öÄêÁäΪ17ËêµÄÈË£¬»¹ÓÐÒ»¸öÃû×ÖÓëÖÚ²»Í¬µÄJoe Smith¡£

    Õâ¸ö±íµÄÖ÷ÒªÓÃ;ÊǸù¾ÝÖ¸¶¨µÄÓû§ÐÕ¡¢ÃûÒÔ¼°ÄêÁä·µ»ØÏàÓ¦µÄvtigerid¡£ÀýÈ磬ÎÒÃÇ¿ÉÄÜÐèÒª²éÕÒÐÕÃûΪMike Sullivan¡¢ÄêÁä17ËêÓû§µÄvtigerid£¨SQLÃüÁîΪSELECT vtigerid FROM vtiger WHERE firstname='Mike' AND lastname='Sullivan' AND age=17£»£©¡£ÓÉÓÚÎÒÃDz»ÏëÈÃMySQLÿ´ÎÖ´Ðвéѯ¾ÍȥɨÃèÕû¸ö±í£¬ÕâÀïÐèÒª¿¼ÂÇÔËÓÃË÷Òý¡£

    Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇÔÚµ¥¸öÁÐÉÏ´´½¨Ë÷Òý£¬±ÈÈçfirstname¡¢lastname»òÕßageÁС£Èç¹ûÎÒÃÇ´´½¨firstnameÁеÄË÷Òý£¨ALTER TABLE vtiger ADD INDEX firstname (firstname)£»£©£¬MySQL½«Í¨¹ýÕâ¸öË÷ÒýѸËÙ°ÑËÑË÷·¶Î§ÏÞÖÆµ½ÄÇЩfirstname='Mike'µÄ¼Ç¼£¬È»ºóÔÙÔÚÕâ¸ö¡°Öмä½á¹û¼¯¡±ÉϽøÐÐÆäËûÌõ¼þµÄËÑË÷£ºËüÊ×ÏÈÅųýÄÇЩlastname²»µÈÓÚ¡°Sullivan¡±µÄ¼Ç¼£¬È»ºóÅųýÄÇЩage²»µÈÓÚ17µÄ¼Ç¼¡£µ±¼Ç¼Âú×ãËùÓÐËÑË÷Ìõ¼þÖ®ºó£¬MySQL¾Í·µ»Ø×îÖÕµÄËÑË÷½á¹û¡£

    ÓÉÓÚ½¨Á¢ÁËfirstnameÁеÄË÷Òý£¬ÓëÖ´ÐбíµÄÍêȫɨÃèÏà±È£¬MySQLµÄЧÂÊÌá¸ßÁ˺ܶ࣬µ«ÎÒÃÇÒªÇóMySQLɨÃèµÄ¼Ç¼ÊýÁ¿ÈÔ¾ÉÔ¶Ô¶³¬¹ýÁËʵ¼ÊËùÐèÒªµÄ¡£ËäÈ»ÎÒÃÇ¿ÉÒÔɾ³ýfirstnameÁÐÉϵÄË÷Òý£¬ÔÙ´´½¨lastname»òÕßageÁеÄË÷Òý£¬µ«×ܵؿ´À´£¬²»ÂÛÔÚÄĸöÁÐÉÏ´´½¨Ë÷ÒýËÑË÷ЧÂÊÈÔ¾ÉÏàËÆ¡£

    ΪÁËÌá¸ßËÑË÷ЧÂÊ£¬ÎÒÃÇÐèÒª¿¼ÂÇÔËÓöàÁÐË÷Òý¡£Èç¹ûΪfirstname¡¢lastnameºÍageÕâÈý¸öÁд´½¨Ò»¸ö¶àÁÐË÷Òý£¬MySQLÖ»ÐèÒ»´Î¼ìË÷¾ÍÄܹ»ÕÒ³öÕýÈ·µÄ½á¹û£¡ÏÂÃæÊÇ´´½¨Õâ¸ö¶àÁÐË÷ÒýµÄSQLÃüÁ  

    ALTER TABLE vtiger ADD INDEX fname_lname_age (firstname,lastname,age)£»
    ÓÉÓÚË÷ÒýÎļþÒÔB-Ê÷¸ñʽ±£´æ£¬MySQLÄܹ»Á¢¼´×ªµ½ºÏÊʵÄfirstname£¬È»ºóÔÙתµ½ºÏÊʵÄlastname£¬×îºóתµ½ºÏÊʵÄage¡£ÔÚûÓÐɨÃèÊý¾ÝÎļþÈκÎÒ»¸ö¼Ç¼µÄÇé¿öÏ£¬MySQL¾ÍÕýÈ·µØÕÒ³öÁËËÑË÷µÄÄ¿±ê¼Ç¼£¡  

    ÄÇô£¬Èç¹ûÔÚfirstname¡¢lastname¡¢ageÕâÈý¸öÁÐÉϷֱ𴴽¨µ¥ÁÐË÷Òý£¬Ð§¹ûÊÇ·ñºÍ´´½¨Ò»¸öfirstname¡¢lastname¡¢ageµÄ¶àÁÐË÷ÒýÒ»ÑùÄØ£¿´ð°¸ÊÇ·ñ¶¨µÄ£¬Á½ÕßÍêÈ«²»Í¬¡£µ±ÎÒÃÇÖ´ÐвéѯµÄʱºò£¬MySQLÖ»ÄÜʹÓÃÒ»¸öË÷Òý¡£Èç¹ûÄãÓÐÈý¸öµ¥ÁеÄË÷Òý£¬MySQL»áÊÔͼѡÔñÒ»¸öÏÞÖÆ×îÑϸñµÄË÷Òý¡£µ«ÊÇ£¬¼´Ê¹ÊÇÏÞÖÆ×îÑϸñµÄµ¥ÁÐË÷Òý£¬ËüµÄÏÞÖÆÄÜÁ¦Ò²¿Ï¶¨Ô¶Ô¶µÍÓÚfirstname¡¢lastname¡¢ageÕâÈý¸öÁÐÉϵĶàÁÐË÷Òý¡£

    ËÄ¡¢×î×óǰ׺

    ¶àÁÐË÷Òý»¹ÓÐÁíÍâÒ»¸öÓŵ㣬Ëüͨ¹ý³ÆÎª×î×óǰ׺£¨Leftmost Prefixing£©µÄ¸ÅÄîÌåÏÖ³öÀ´¡£¼ÌÐø¿¼ÂÇÇ°ÃæµÄÀý×Ó£¬ÏÖÔÚÎÒÃÇÓÐÒ»¸öfirstname¡¢lastname¡¢ageÁÐÉϵĶàÁÐË÷Òý£¬ÎÒÃdzÆÕâ¸öË÷ÒýΪfname_lname_age¡£µ±ËÑË÷Ìõ¼þÊÇÒÔϸ÷ÖÖÁеÄ×éºÏʱ£¬MySQL½«Ê¹ÓÃfname_lname_ageË÷Òý£º Chinaz.com

    ÒÔÏÂΪÒýÓõÄÄÚÈÝ£º
    firstname£¬lastname£¬age
    firstname£¬lastname
    firstname

    ´ÓÁíÒ»·½ÃæÀí½â£¬ËüÏ൱ÓÚÎÒÃÇ´´½¨ÁË(firstname£¬lastname£¬age)¡¢(firstname£¬lastname)ÒÔ¼°(firstname)ÕâЩÁÐ×éºÏÉϵÄË÷Òý¡£ÏÂÃæÕâЩ²éѯ¶¼Äܹ»Ê¹ÓÃÕâ¸öfname_lname_ageË÷Òý£º  

    ÒÔÏÂΪÒýÓõÄÄÚÈÝ£º
    SELECT vtigerid FROM vtiger
    WHERE firstname='Mike' AND lastname='Sullivan' AND age='17';
    SELECT vtigerid FROM vtiger WHERE firstname='Mike' AND lastname='Sullivan';
    SELECT vtigerid FROM vtiger WHERE firstname='Mike';
    The following queries cannot use the index at all:
    SELECT vtigerid FROM vtiger WHERE lastname='Sullivan';
    SELECT vtigerid FROM vtiger WHERE age='17';
    SELECT vtigerid FROM vtiger WHERE lastname='Sullivan' AND age='17';

     

    Î塢ѡÔñË÷ÒýÁÐ

    ÔÚÐÔÄÜÓÅ»¯¹ý³ÌÖУ¬Ñ¡ÔñÔÚÄÄЩÁÐÉÏ´´½¨Ë÷ÒýÊÇ×îÖØÒªµÄ²½ÖèÖ®Ò»¡£¿ÉÒÔ¿¼ÂÇʹÓÃË÷ÒýµÄÖ÷ÒªÓÐÁ½ÖÖÀàÐ͵ÄÁУºÔÚWHERE×Ó¾äÖгöÏÖµÄÁУ¬ÔÚjoin×Ó¾äÖгöÏÖµÄÁС£Çë¿´ÏÂÃæÕâ¸ö²éѯ£º

    SELECT age ## ²»Ê¹ÓÃË÷Òý  

    FROM vtiger WHERE firstname='Mike' ## ¿¼ÂÇʹÓÃË÷Òý

     

    AND lastname='Sullivan' ## ¿¼ÂÇʹÓÃË÷Òý

    Õâ¸ö²éѯÓëÇ°ÃæµÄ²éѯÂÔÓв»Í¬£¬µ«ÈÔÊôÓÚ¼òµ¥²éѯ¡£ÓÉÓÚageÊÇÔÚSELECT²¿·Ö±»ÒýÓã¬MySQL²»»áÓÃËüÀ´ÏÞÖÆÁÐÑ¡Ôñ²Ù×÷¡£Òò´Ë£¬¶ÔÓÚÕâ¸ö²éѯÀ´Ëµ£¬´´½¨ageÁеÄË÷ÒýûÓÐʲô±ØÒª¡£ÏÂÃæÊÇÒ»¸ö¸ü¸´ÔÓµÄÀý×Ó£º

     

    SELECT people.age, ##²»Ê¹ÓÃË÷Òý

    town.name ##²»Ê¹ÓÃË÷Òý

     

    FROM vtigerLEFT JOIN town ON

    vtiger.townid=town.townid ##¿¼ÂÇʹÓÃË÷Òý

    WHERE firstname='Mike' ##¿¼ÂÇʹÓÃË÷Òý 

    AND lastname='Sullivan' ##¿¼ÂÇʹÓÃË÷Òý

    ÓëÇ°ÃæµÄÀý×ÓÒ»Ñù£¬ÓÉÓÚfirstnameºÍlastname³öÏÖÔÚWHERE×Ó¾äÖУ¬Òò´ËÕâÁ½¸öÁÐÈÔ¾ÉÓд´½¨Ë÷ÒýµÄ±ØÒª¡£³ý´ËÖ®Í⣬ÓÉÓÚtown±íµÄtownidÁгöÏÖÔÚjoin×Ó¾äÖУ¬Òò´ËÎÒÃÇÐèÒª¿¼ÂÇ´´½¨¸ÃÁеÄË÷Òý¡£ÄÇô£¬ÎÒÃÇÊÇ·ñ¿ÉÒÔ¼òµ¥µØÈÏΪӦ¸ÃË÷ÒýWHERE×Ó¾äºÍjoin×Ó¾äÖгöÏÖµÄÿһ¸öÁÐÄØ£¿²î²»¶àÈç´Ë£¬µ«²¢²»ÍêÈ«¡£ÎÒÃÇ»¹±ØÐ뿼Âǵ½¶ÔÁнøÐбȽϵIJÙ×÷·ûÀàÐÍ¡£MySQLÖ»ÓжÔÒÔϲÙ×÷·û²ÅʹÓÃË÷Òý£º<£¬<=£¬=£¬>£¬>=£¬BETWEEN£¬IN£¬ÒÔ¼°Ä³Ð©Ê±ºòµÄLIKE¡£¿ÉÒÔÔÚLIKE²Ù×÷ÖÐʹÓÃË÷ÒýµÄÇéÐÎÊÇÖ¸ÁíÒ»¸ö²Ù×÷Êý²»ÊÇÒÔͨÅä·û£¨%»òÕß_£©¿ªÍ·µÄÇéÐΡ£ÀýÈ磬¡°SELECT vtigerid FROM vtiger WHERE firstname LIKE 'Mich%';¡±Õâ¸ö²éѯ½«Ê¹ÓÃË÷Òý£¬µ«¡°SELECT vtigerid FROM vtiger WHERE firstname LIKE '%ike';¡±Õâ¸ö²éѯ²»»áʹÓÃË÷Òý¡£

  • Ôö¼ÓPHPµÄSession´æ´¢ºÍ´¦ÀíÄÜÁ¦

    2008-4-09

    ¿ÉÄܺܶàPHPer¶¼Óõ½ÁËPHPÌṩµÄSession¹¦ÄÜ£¬¿ÉÒÔ·½±ãµÄ½øÐлỰ¹¦ÄÜ´¦Àí£¬PHP·þÎñ¶ËĬÈϵÄsession´æ´¢ÊÇÎļþ´æ·Å·½Ê½£¬ÔÚWindowsÉÏPHPĬÈϵÄSession·þÎñ¶ËÎļþ´æ·ÅÔÚC:\WINDOWS\TempÏ£¬*NIXÏÂĬÈÏ´æ·ÅÔÚ/tmpÏ£¬Èç¹û˵²¢·¢·ÃÎʺܴó»òÕßsession½¨Á¢Ì«¶à£¬ÔÚÕâÁ½¸öĿ¼ÏÂ¾Í»á´æÔÚ´óÁ¿ÀàËÆsess_xxxxxxµÄsessionÎļþ£¬Í¬Ò»¸öĿ¼ÏÂÎļþÊý¹ý¶à»áµ¼ÖÂÐÔÄÜϽµ£¬²¢ÇÒ¿ÉÄܵ¼ÖÂÊܵ½¹¥»÷×îÖÕ³öÏÖÎļþϵͳ´íÎó¡£Õë¶ÔÕâÑùµÄÇé¿ö£¬PHP±¾ÉíÌåÌṩÁ˱ȽϺõĽâ¾ö°ì·¨¡£
    ¡¡¡¡²»ÉÙÅóÓÑ¿ÉÄܶ¼Ã»ÓÐ×¢Òâµ½php.iniÀïÃæSessionÉèÖò¿·ÖÖÐÓÐÕâÑùÒ»Ï

    ; session.save_path = "N; MODE; /path"

    ¡¡¡¡ÕâÏîÉèÖÃÌṩ¸øÎÒÃÇ¿ÉÒÔ¸øsession´æ·ÅĿ¼½øÐж༶ɢÁУ¬ÆäÖС°N¡±±íʾҪÉèÖõÄĿ¼¼¶Êý£¬¡°MODE¡±±íʾĿ¼µÄȨÏÞÊôÐÔ£¬Ä¬ÈÏΪ600£¬ÔÚWINDOWSÉÏ»ù±¾ÊDz»ÓÃÉèÖõģ¬*NIXÉÏÒ²¿ÉÒÔ²»ÓÃÉèÖ㬺óÃæµÄ¡°/path¡±±íʾsessionÎļþ´æ·ÅµÄ¸ùĿ¼·¾¶£¬±ÈÈçÎÒÃÇÉèÖÃΪÏÂÃæµÄ¸ñʽ

    session.save_path = "2; /tmp/phpsession"
    ¡¡¡¡ÉÏÃæµÄÉèÖñíʾÎÒÃǰÑ/tmp/phpsessionĿ¼×÷ΪphpµÄsessionÎļþ´æ·Å¸ùĿ¼£¬ÔÚ¸ÃĿ¼Ï½øÐÐÁ½¼¶Ä¿Â¼É¢ÁУ¬Ã¿Ò»¼¶Ä¿Â¼·Ö±ðÊÇ0-9ºÍa-z¹²36¸ö×ÖĸÊý×ÖΪĿ¼Ãû£¬ÕâÑù´æ·ÅsessionµÄĿ¼¿ÉÒÔ´ïµ½36*36¸ö£¬ÏàÐÅ×÷Ϊµ¥Ì¨·þÎñÆ÷À´Ëµ£¬ÕâÊÇÍêÈ«¹»ÓÃÁË£¬Èç¹û˵ÄúµÄϵͳ¼Ü¹¹Éè¼ÆÎª¶ą̀·þÎñÆ÷¹²ÏísessionÊý¾Ý£¬¿ÉÒÔ°ÑĿ¼¼¶Ôö¼Óµ½3¼¶»òÕ߸ü¶à¡£
    ¡¡¡¡ÐèҪעÒâµÄÊÇ£¬php×Ô¼º²¢²»»á×Ô¶¯´´½¨×ÓĿ¼£¬ÐèÒªÄú×Ô¼º¶¯ÊÖÈ¥´´½¨£¬ÍøÉÏÕÒµ½ÕâÑùµÄ×Ô¶¯´´½¨Ä¿Â¼µÄ´úÂ룬´ó¼Ò¿ÉÒÔ×ö¸ö²Î¿¼¡£ÏÂÃæµÄ´úÂë×Ô¶¯´´½¨3¼¶×ÓĿ¼£¬¿ÉÒÔ×Ô¼º¶¯ÊÖ¸ù¾ÝÐèÒª½øÐÐÐ޸ġ£

    set_time_limit(0);
    $string = '0123456789abcdefghijklmnopqrstuvwxyz';
    $length = strlen($string);
    function makeDir($param)
    {
    if(!file_exists($param)) {
    makeDir(dirname($param));
    mkdir($param);
    }
    }
    for($i = 0; $i < $length; $i++) {
    for($j = 0; $j < $length; $j++) {
    for($k = 0; $k < $length; $k++) {
    makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
    }
    }
    }
    ?>
    ¡¡¡¡´ó¼Ò¿ÉÄÜ×¢Òâµ½Ç°ÃæµÄÎÄ×ÖÖÐÌáµ½ÁËÓйضà·þÎñÆ÷¹²ÏíphpµÄSESSION£¬ÕâÊǺܶàÓ¦Óö¼»áÓöµ½µÄÎÊÌâ£¬ÍøÉÏÒ²Óв»ÉÙÏà¹ØµÄ×ÊÔ´£¬´ó¼Ò¿ÉÒÔÈ¥googleһϣ¬MichaelÕâÀïÖ»Ìáһϴó¸ÅµÄ˼·¡£
    ¡¡¡¡Ò»°ãÀ´ËµÎÒÃÇÓõ½×î¶àµÄ·½·¨ÓÐÁ½ÖÖ£º
    ¡¡¡¡1¡¢NFS»òÕßSamba¹²ÏíµÄ·½·¨£¬Èø÷¸ö·þÎñÆ÷ÉÏ´æ·ÅsessionÎļþµÄ´ÅÅ̹²Ïí£¬ÕâÖÖ·½·¨¼òµ¥¿ÉÐС£
    ¡¡¡¡2¡¢¼¯Öд洢µ½Êý¾Ý¿âÖУ¬ÕâÊDZȽ϶àµÄʵÏÖ·½·¨£¬Í¨¹ýphpÌṩµÄsession_set_save_handler()º¯ÊýÀ´Öض¨Òåsessionº¯Êý£¬ÍƼöʹÓÃÕâÖÖ·½·¨¡£
  • PHP£ºMVCÃÔ˼

    2008-4-07

    ½üÀ´Éè¼ÆÄ£Ê½·çÐУ¬MVCËæ´¦¿É¼û£¬PHPÁìÓòÒ²²»ÀýÍ⣬ºÜ¶àÂÛ̳¶¼¿ªÊ¼ÌÖÂÛÔÚPHPÖÐʹÓÃMVC¡£È»¶ø£¬M¡¢V¡¢CÔÚPHPÖе½µ×¸ÃÈçºÎʵÏÖ£¿MVCÕæµÄÊʺÏPHPô£¿ÕâÀïEasy¸ø³öһЩ×Ô¼ºµÄ˼¿¼¡£

    ¡¡¡¡MVCµÄÔ­ÐÍ

    ¡¡¡¡MVC±¾À´ÊÇ´æÔÚÓÚDesktop³ÌÐòÖеģ¬MÊÇÖ¸Êý¾ÝÄ£ÐÍ£¬VÊÇÖ¸Óû§½çÃæ£¬CÔòÊÇ¿ØÖÆÆ÷¡£Ê¹ÓÃMVCµÄÄ¿µÄÊǽ«MºÍVµÄʵÏÖ´úÂë·ÖÀ룬´Ó¶øÊ¹Í¬Ò»¸ö³ÌÐò¿ÉÒÔʹÓò»Í¬µÄ±íÏÖÐÎʽ¡£±ÈÈçÒ»Åúͳ¼ÆÊý¾ÝÄã¿ÉÒÔ·Ö±ðÓÃÖù״ͼ¡¢±ýͼÀ´±íʾ¡£C´æÔÚµÄÄ¿µÄÔòÊÇÈ·±£MºÍVµÄͬ²½£¬Ò»µ©M¸Ä±ä£¬VÓ¦¸Ãͬ²½¸üС£

    ¡¡¡¡JAVAÖеÄMVC

    ¡¡¡¡JAVA°ÑMVCÒýÈëÁËWebÁìÓò£¬²¢ÔÚ´Ë»ù´¡Éϼܹ¹³öÁËÒ»Ì׳ÆÎªModel2µÄÌåϵ¡£ÓÉÓÚWebµÄÌØÊâÐÔ£¬JAVAÖеÄMVCºÍDesktopÖеÄMVC²¢²»ÍêȫһÖ¡£Ö÷ÒªÔ­ÒòÊÇWebÖеÄV²»ÊdzÖÐøµÄ£¬Óû§Ã¿·ÃÎÊÒ»´Î£¬V¾ÍÒªÖØÐÂÉú³ÉÒ»´Î£¬ËùÒÔVʼÖÕÊǺÍMÒ»Öµģ¬²»ÐèÒªCÀ´¿ØÖÆÍ¬²½¡£ÄÇôJAVAÖеÄCÔÚ¸Éʲô£¿JAVAÖеÄCͨ³£ÓÃÓÚÁ÷³ÌµÄתÏò£¬ÆäʵÓõÄÊÇDispatchģʽ£¬²»ÔÙÊÇDesktopÖеÄCÁË¡£

    ¡¡¡¡PHPÖеÄMVC

    ¡¡¡¡ÒªÔÚPHPÖÐÔ­·â²»¶¯µÄCOPY JAVAµÄMVCÊDz»¿ÉÄܵġ£ÎÊÌâÖ÷Òª±íÏÖÔÚMÉÏ£¬ÔÚJAVAÖУ¬MÊǶÀÁ¢ÓÚÒµÎñÂß¼­ºÍ±íÏÖÂß¼­µÄÊý¾ÝÄ£ÐÍ£¬ÔÚ·þÎñÆ÷¶Ë¿çÒ³Ãæ´æÔÚ£¬JAVA Bean°çÑݵľÍÊÇÕâ¸ö½ÅÉ«¡£¶øPHP½ø³Ì²¢²»³¤Ê±¼äפÁôÓÚÄڴ棬ֻÔÚPHPÒ³Ãæ¿ªÊ¼Ö´ÐÐʱ´´½¨£¬ÔÚÒ³Ãæ½âÊÍÖ´ÐнáÊøÊ±¾ÍÒѾ­½áÊø¡£ÔÚÕâÑùµÄÇé¿öÏ£¬ÎÒÃǸù±¾ÎÞ·¨Ö±½ÓʵÏÖM¡£ËùÒÔËùÓÐÉù³ÆÊµÏÖÁËMVCģʽµÄPHP³Ìʽ¶¼Ö»ÄÜͨ¹ýÄ£ÄâÊÖ¶ÎÀ´ÊµÏÖM¡£ÊµÏֵķ½Ê½Ò»°ãÊÇÔÚµ±Ç°Ò³Ãæ½áÊøÇ°°ÑÊý¾Ý´æÈëÊý¾Ý¿â»òÕßcookie/session£¬ÔÚÏÂÒ»¸öÒ³ÃæÖÐÔÙ͸¹ýÊý¾Ý¿â»òÕßcookie/sessionÖØ½¨M¡£ÕâÑùµÄ·½Ê½ºÍJAVAÖеÄBean±ÈÆðÀ´¿ÉÒÔ˵ÊÇ¿ªÏú¾Þ´ó£¬±¾À´ÍùÄÚ´æÖÐдÊý¾ÝµÄ¼òµ¥²Ù×÷ÏÖÔÚÒª´Ó·þÎñÆ÷¶Ë´«µ½¿Í»§¶Ë»òÕßÊý¾Ý¿â£¬È»ºóÔÙ´«»ØÀ´¡£ÓëÆäÓÃÕâô´óµÄ¿ªÏúÀ´Î¬»¤Ò»¸öÊý¾ÝÄ£ÐÍÔÙÔÚ×îºó°ÑÕâ¸öÄ£ÐÍÈû»ØÊý¾Ý¿â£¬»¹²»ÈçÖ±½Ó¸ù¾ÝÐèÒª¸üÐÂÊý¾Ý¿âÀï±ßµÄÊý¾Ý¡£

    ¡¡ÏÖÔÚPHPÖеÄMVC¼Ü¹¹¿ÉÒÔÓÃͼһÀ´±íʾ¡£


    ¡¡¡¡È»ºóÎÒÃÇÔÙÀ´¿´V¡£ÏÖÔںܶàPHP³ÌÐò¼òµ¥µÄʹÓÃÁËһЩģ°å¼¼Êõ¾ÍÔÚ˵Ã÷ÖÐд¡°²ÉÓÃMVC¼Ü¹¹¡±¡£Æäʵ¾ø´ó¶àÊýµÄPHPÄ£°å³ÌÐò¶¼Ö»ÊÇ·ÖÀëHTMLºÍPHPµÄ£¬¶ø·ÇMVCÇ¿µ÷µÄÏÔʾÂß¼­ºÍÒµÎñÂß¼­·ÖÀë¡£Ò»¸ö»ìÓÃHTMLºÍPHPµÄÒ³ÃæÒ»Ñù¿ÉÒÔÊÇMVCµÄÒ»²¿·Ý¡£ÈçºÎ·ÖÀëÏÔʾÂß¼­ºÍÒµÎñÂß¼­ÖÁ½ñûÓÐÒ»¸öÂúÒâµÄ·½°¸¡£ÎÒ¸öÈËÔò±È½ÏÈÏͬhttp://www.phpe.net/articles/384.shtmlµÄʵÏÖ·½°¸¡£ÖÁÓÚC£¬ºÍJAVAÖв¶à£¬»¹ÊDZ»ÓÃ×÷תÏò£¬Õâ¸öÔÚPHPÖÐÆäʵ²¢²»ÖØÒª¡£

    ¡¡¡¡Ò»¸ö¼«ºÄ×ÊÔ´µÄM + Ò»¸öÇø±ð²»´óµÄV + ¿ÉÓпÉÎÞµÄC ¹¹³ÉÁËPHPÖÐËùνµÄMVC¡£

    ¡¡¡¡»ùÓÚÒÔÉÏ·ÖÎö£¬EasyÈÏΪ£¬PHPÔ­ÓеÄ3²ã¹¹¼Ü±ÈËùνµÄMVC¸üΪ¸ßЧ£¬¶ø3²ã¹¹¼ÜÖеıíÏÖ²ãÒª½â¾öµÄÎÊÌâMVCÖеÄVҲͬÑù´æÔÚ¡£Ò»¸ö¸Ä½øºóµÄ3²ã¼Ü¹¹±ÈMVC¸üÊÊÓÃÓÚPHP¡£

    ¡¡¡¡PS£ºÓеķ½°¸°ÑÒµÎñÂß¼­²¢ÈëMÖУ¨http://www.phpe.net/articles/382.shtml£©£¬ÕâÆäʵÊÇMVCµÄ˼Ïë±³µÀ¶ø³ÛµÄ¡£

  • ÉÏ´«´úÂë

    2008-3-25

    <?php
    /**
     +------------------------------------------------------------------------------
     * ÎļþÉÏ´«¡¾18_kk008.png¡¿
     +------------------------------------------------------------------------------
     * @package  vtigerCRM/include
     * @pagename   upload_file.php
     +------------------------------------------------------------------------------
     */
    require_once('config.php');

    class UploadFile
    {
     var $field_name;
     var $stored_file_name;

            function UploadFile ($field_name)
            {
      global $log;
      $log->debug("Entering UploadFile (".$field_name.") method ...");
      $this->field_name = $field_name;
      $log->debug("Exiting UploadFile method ...");
            }
    /**
     +-----------------------------------------------------------------------
     * Function to get the path of the upload file
     +-----------------------------------------------------------------------
     */
    function get_url($stored_file_name,$bean_id)
     {
      global $log;
      $log->debug("Entering get_url(".$stored_file_name.",".$bean_id.") method ...");
      global $site_URL;
      global $upload_dir;
      $log->debug("Exiting get_url method ...");
                    return 'http://'.$_ENV['HOSTNAME'] .':' .$_SERVER["SERVER_PORT"].'/'.$upload_dir.$bean_id.$stored_file_name;
     }

    /**
     +-----------------------------------------------------------------------
     *  Function to duplicate and copy a file to another location
     +-----------------------------------------------------------------------
     * @param $old_id -- old_id:: Type integer
     * @param $new_id -- new_id:: Type integer
     * @param $file_name -- filename:: Type string
     +------------------------------------------------------------------------
     */
     function duplicate_file($old_id, $new_id, $file_name)
     {
      global $log;
      $log->debug("Entering duplicate_file(".$old_id.", ".$new_id.", ".$file_name.") method ...");
      global $root_directory;
      global $upload_dir;
                    $source = $root_directory.'/'.$upload_dir.$old_id.$file_name;
                    $destination = $root_directory.'/'.$upload_dir.$new_id.$file_name;
      copy( $source,$destination);
      $log->debug("Exiting duplicate_file method ...");
     }
    /**
     +-----------------------------------------------------------------------
     *Function to get the status of the file upload
     +-----------------------------------------------------------------------
     * @returns boolean
     +------------------------------------------------------------------------
     */
     function confirm_upload()
     {
      global $log;
      $log->debug("Eentering confirm_upload() method ...");
      global $root_directory;
      global $upload_dir;
      global $upload_maxsize;
                    global $upload_badext;


      if (!is_uploaded_file($_FILES[$this->field_name]['tmp_name']) )
      {
       $log->debug("Exiting confirm_upload method ...");
       return false;
      }
      else if ($_FILES[$this->field_name]['size'] > $upload_maxsize)
      {
       die("ERROR: uploaded file was too big: max filesize:$upload_maxsize");
      }


      if( !is_writable( $root_directory.'/'.$upload_dir))
      {
       die ("ERROR: cannot write to directory: $root_directory/$upload_dir for uploads");
      }

      $this->stored_file_name = $this->create_stored_filename();
      $log->debug("Exiting confirm_upload method ...");
      return true;
     }
    /**
     +-----------------------------------------------------------------------
     * Function to get the stored file name
     +-----------------------------------------------------------------------
     */
     function get_stored_file_name()
     {
      global $log;
      $log->debug("Entering get_stored_file_name() method ...");
      $log->debug("Exiting get_stored_file_name method ...");
      return $this->stored_file_name;
     }
    /**
     +-----------------------------------------------------------------------
     * Function to generate a filename for storing
     +-----------------------------------------------------------------------
     */
     function create_stored_filename()
     {
      global $log;
      $log->debug("Entering create_stored_filename() method ...");
      global $upload_badext;
                    $stored_file_name = $_FILES[$this->field_name]['name'];

                    $ext_pos = strrpos($stored_file_name, ".");

      $ext = substr($stored_file_name, $ext_pos + 1);

                    if (in_array($ext, $upload_badext))
      {
                            $stored_file_name .= ".txt";
                    }
      $log->debug("Exiting create_stored_filename method ...");
      return $stored_file_name;
     }
    /**
     +-----------------------------------------------------------------------
     *Function is to move a file and store it in given location
     +-----------------------------------------------------------------------
     * @param $bean_id -- $bean_id:: Type integer
     +-----------------------------------------------------------------------
     * @returns boolean
     +-----------------------------------------------------------------------
     */
     function final_move($bean_id)
     {
      global $log;
      $log->debug("Entering final_move(".$bean_id.") method ...");
      global $root_directory;
      global $upload_dir;

                    $file_name = $bean_id.$this->stored_file_name;

                    $destination = $root_directory.'/'.$upload_dir.$file_name;

      if (!move_uploaded_file($_FILES[$this->field_name]['tmp_name'], $destination))
                    {
       die ("ERROR: can't move_uploaded_file to $destination");
                    }
      $log->debug("Exiting final_move method ...");
                    return true;


     }
    /**
     +-----------------------------------------------------------------------
     *Function deletes a file for a given file name
     +-----------------------------------------------------------------------
     *@param $bean_id -- bean_id:: Type integer
     *@param $file_name -- file name:: Type string
     +-----------------------------------------------------------------------
     *@returns boolean
     +-----------------------------------------------------------------------
     */
     function unlink_file($bean_id,$file_name)
            {
      global $log;
      $log->debug("Entering unlink_file(".$bean_id.",".$file_name.") method ...");
                    global $root_directory;
      global $upload_dir;
      $log->debug("Exiting unlink_file method ...");
                    return unlink($root_directory."/".$upload_dir.$bean_id.$file_name);
            }


    }
    ?>

  • xajaxÎÞË¢ÐÂÉÏ´«ÊµÀý

    2008-1-23

    ÓÃÁ˹úÍâÍøÓÑÀ©³äµÄxajaxÀ࣬ʵÏÖÁËxajaxÎÞË¢ÐÂÉÏ´«£¬¸½xajaxÎÞË¢ÐÂÉÏ´«ÊµÀýÒÔ¼°ËµÃ÷
    ÏÈÀ´¿´Ò»ÏÂÑÝʾ
    http://xajax.dayanmei.com/demo/upload/admin/language.php

    £¨µã»÷create language,Õâ¸öclickÊÇÓеã´íÎóµÄ£¬ÆäʵӦ¸ÃÖ±½Ó¶ÁÈ¡¶ø²»ÊÇÏÔʾ»òÕßÒþ²Ø²ã£¬»òÕßÄãÓкõĽâ¾ö°ì·¨£©

    Ö÷ÒªµÄxajax½áºÏphpÉÏ´«ÎļþºÍ±£´æÊý¾ÝµÄº¯Êý¼¯Öдæ·ÅÔÚ ./admin/includes/function.xajax.php ÀïÃæ
    ÔÚlanguage.phpÎļþÔØÈë²¢³õʼ»¯xajaxÉÏ´«À©Õ¹

    require_once(ROOT_PATH '/includes/xajax/xajax.inc.php');

    require_once(
    ROOT_PATH '/admin/includes/function.xajax.php'
    );

    require_once(
    ROOT_PATH '/includes/xajax/xajaxExtend.php'
    );

    //$xajax = new xajax();

    $xajax = new xajaxExtend
    ;

    //$xajax->debugOn();

    $xajax->registerFunction("ShowCreateLanguage"
    );

    $xajax->registerFunction("CreateLanguage"
    );

    $xajax->registerFunction("DeleteLanguage"
    );

    $xajax->registerFunction("ModifyLanguage"
    );

    $xajax->registerFunction("UpdateLanguage"
    );

    $xajax->processRequests();


    Ö÷Òª´¦ÀíÉÏ´«º¯Êý
    <?php

    //ÏÔʾÌí¼ÓÓïÑÔ±íµ¥

    function ShowCreateLanguage($hidden 1
    ) {

         
    $objResponse = new XajaxResponse
    ();

         if(
    $hidden == 1
    ){

              
    $objResponse->addAssign('createlanguage','innerHTML',"<a href=\"\" onclick=\"xajax_ShowCreateLanguage(2);return false\" title=\"\">create language</a>"
    );

              
    $objResponse->addAssign('h','style.display','block'
    );

              }else{

              
    $objResponse->addAssign('createlanguage','innerHTML',"<a href=\"\" onclick=\"xajax_ShowCreateLanguage(1);return false\" title=\"\">create language</a>"
    );

              
    $objResponse->addAssign('h','style.display','none'
    );

              }

         return 
    $objResponse
    ;

    }



    function 
    CreateLanguage($f1
    ) {

         global 
    $db,$tablefix,$LANG
    ;

         
    $objResponse = new xajaxResponse
    ();

         
    $name xml_escape($f1['name'
    ]);

         
    $charset xml_escape($f1['charset'
    ]);

         
    $ord xml_escape($f1['ord'
    ]);

         
    $ord = (($ord == '') OR !is_numeric($ord)) ? '1' $ord
    ;



         if(empty(
    $name
    )){

              
    $objResponse->addAlert("Language name is empty"
    );

              }



         if(empty(
    $charset
    )){

              
    $objResponse->addAlert("charset is empty"
    );

              }

         

         if(!empty(
    $name) AND !empty($charset
    )){

              
    //ÅжÏÊÇ·ñÓÐÉÏ´«Îļþ

              
    if($_FILES['filename']['tmp_name'] <>""
    ){

                   require_once(
    ROOT_PATH '/includes/class.upload.php'
    );

                   

                   
    $fileFormat = array('gif','jpg','jpge','png'
    );

                   
    $upload =     new UploadROOT_PATH '/attaches/'$fileFormat
    );

                   if(!
    $upload->run('filename'
    )){

                        
    $objResponse->addAlert("upload image file false"
    );

                   }else{

                   
    //Èç¹û³É¹¦ÉÏ´«ÔòÌí¼Ó½øÊý¾Ý¿â

                   
    $filename $upload->returnArray[0][saveName
    ];

                   
    $insertsql "INSERT INTO `language` (`languageid`,`name`,`filename`,`charset`,`ord`) VALUES (NULL,'$name','$filename','$charset','$ord')"
    ;

                   if(
    $db->query($insertsql
    )){

                        
    //Èç¹ûÌí¼Ó³É¹¦

                        
    $languageid $db->insertid
    ();

                        
    $innerHTML 
    = <<<EOT

        <ul id="page_" class="two">

        <li>$languageid</li>

        <li>$name</li>

        <li><img src="../attaches/" width="21" /></li>

        <li>$charset</li>

        <li>$ord</li>

        <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG
    [delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

        </ul>

    EOT;

                        
    $objResponse->addAppend("language","innerHTML",$innerHTML
    );

                        }

                   }

                   
    //Èç¹ûûÓÐÎļþÉÏ´«

                   
    }else{

                   
    $insertsql "INSERT INTO `language` (`languageid`,`name`,`filename`,`charset`,`ord`) VALUES (NULL,'$name','','$charset','$ord')"
    ;

                   if(
    $db->query($insertsql
    )){

                        
    //Èç¹ûÌí¼Ó³É¹¦

                        
    $languageid $db->insertid
    ();

                        
    $innerHTML 
    = <<<EOT

        <ul id="page_" class="two">

        <li>$languageid</li>

        <li>$name</li>

        <li>&nbsp;</li>

        <li>$charset</li>

        <li>$ord</li>

        <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG
    [delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

        </ul>

    EOT;

                        
    $objResponse->addAppend("language","innerHTML",$innerHTML
    );

                        }

                   }

                   
    //Çå¿Õ±íµ¥

                   
    $objResponse->addClear('name','value'
    );

                   
    $objResponse->addClear('filename','value'
    );

                   
    $objResponse->addClear('charset','value'
    );

                   
    $objResponse->addClear('ord','value'
    );

                   
    $objResponse->addAssign("h","style.display","none"
    );

              }

         

         return 
    $objResponse
    ;

    }



    //´Ëº¯ÊýδÍêÈ«

    function DeleteLanguage($languageid
    ) {

         global 
    $db,$tablefix
    ;

         
    $languageid xml_escape($languageid
    );

         
    $objResponse = new XajaxResponse
    ();

         if(!
    is_numeric($languageid
    )){

              
    $objResponse->addAlert("language id is empty"
    );

              }else{

              
    //È¡µÃfilename,²¢É¾³ýͼƬ

              
    $result $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid'"
    );

              
    $r $db->fetch_array($result
    );

              @
    unlink('../attaches/'.$r['filename'
    ]);

              

              if(
    $db->query("DELETE FROM `language` WHERE `languageid` = '$languageid' LIMIT 1"
    )){

                   
    //Ö´ÐÐɾ³ý Ó¦¸Ã»¹ÒªÉ¾³ýÓëÓïÑÔÏà¹ØµÄ¶«Î÷

                   //$objResponse->addAlert("success delete a session");

                   
    $objResponse->addRemove("page_".$languageid
    );

                   }else{

                   
    $objResponse->addAlert("failed to delete a session"
    );

                   }

              }



         return 
    $objResponse
    ;

    }



    function 
    ModifyLanguage($languageid
    ) {

         global 
    $db,$tablefix,$LANG
    ;

         
    $languageid xml_escape($languageid
    );

         
    $objResponse = new XajaxResponse
    ();

         if(!
    is_numeric($languageid
    )){

              
    $objResponse->addAlert("Language id error"
    );

              }else{

              
    $result $db->query("SELECT * FROM `language` WHERE `languageid` = '$languageid' LIMIT 1"
    );

              
    $language $db->fetch_array($result
    );



              if(
    count($language)>0
    ){

                   if(
    $language['filename'] != ''
    ){

                        
    $image "<img src=\"../attaches/\" width=\"21\">"
    ;

                        }else{

                        
    $image ''
    ;

                        }

                   
    $innerHTML 
    = <<<EOT

    <div id="midifyinput" style="margin:0 auto;padding:0;width:760px;">

    <form id="f2" name="f2" onsubmit="return updateForm();" method="post" enctype="multipart/form-data">

    <input type="hidden" name="languageid" value="" />

    <table id="addlanguage" class="th">

        <th>Language Name</th>

        <th>Icon(21px * 14px)</th>

        <th>Charset</th>

        <th>Order</th>

        <th width="150">Control</th>

         <tr>

        <td><input type="text" name="name" id="name" value="" /></td>

        <td>$image<input type="file" name="filename" /></td>

        <td><input type="text" name="charset" id="charset" value="" /></td>

        <td><input type="text" name="ord" id="ord" value="" /></td>

        <td><input type="submit" class="button1" name="" value="$LANG
    [add]" /></td>

        </tr>

        </table>

        </form>

        </div>

    EOT;

                   
    $objResponse->addAssign("h","style.display",''
    );

                   
    $objResponse->addAssign("h","innerHTML",$innerHTML
    );

                   }else{

                   
    $objResponse->addAlert("Language is not installed"
    );

                   }

              }

         return 
    $objResponse
    ;

    }



    function 
    UpdateLanguage($f2
    ) {

         global 
    $db,$tablefix,$LANG
    ;

         
    $objResponse = new xajaxResponse
    ();

         
    $name xml_escape($f2['name'
    ]);

         
    $charset xml_escape($f2['charset'
    ]);

         
    $languageid xml_escape($f2['languageid'
    ]);

         
    $ord xml_escape($f2['ord'
    ]);

         
    $ord = (($ord == '') OR !is_numeric($ord)) ? '1' $ord
    ;



         if(empty(
    $name
    )){

              
    $objResponse->addAlert("Language name is empty"
    );

              }



         if(empty(
    $charset
    )){

              
    //$objResponse->addAlert("charset is empty");

              
    }

         

         if(!empty(
    $name) AND !empty($charset
    )){

              
    //ÅжÏÊÇ·ñÓÐÉÏ´«Îļþ



              
    if($_FILES['filename']['tmp_name'] != ""
    ){

                   require_once(
    ROOT_PATH '/includes/class.upload.php'
    );

                   

                   
    $fileFormat = array('gif','jpg','jpge','png'
    );

                   
    $upload =     new UploadROOT_PATH '/attaches/'$fileFormat
    );

                   if(!
    $upload->run('filename'
    )){

                        
    $objResponse->addAlert("upload image file false"
    );

                   }else{

                   
    //Èç¹û³É¹¦ÉÏ´«ÔòÌí¼Ó½øÊý¾Ý¿â

                   
    $filename $upload->returnArray[0][saveName
    ];

                   
    //»ñȡԭÀ´µÄͼƬ·¾¶²¢É¾³ý

                   
    $result $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid' LIMIT 1"
    );

                   
    $image $db->fetch_array($result
    );

                   if(
    count($image)>0
    ){

                        @
    unlink('../attaches/'.$image['filename'
    ]);

                        }

                   

                   
    //¸üÐÂÊý¾Ý¿â

                   
    $updatesql "UPDATE `language` SET `name` = '$name',`charset` = '$charset',`ord` = '$ord',`filename` = '$filename' WHERE `languageid` = '$languageid' LIMIT 1"
    ;

                   if(
    $db->query($updatesql
    )){

                        
    //Èç¹ûÌí¼Ó³É¹¦

                        
    $RooPath ROOT_PATH
    ;

                        
    $innerHTML 
    = <<<EOT

        <li>$languageid</li>

        <li>$name</li>

        <li><img src="../attaches/" width="21" /></li>

        <li>$charset</li>

        <li>$ord</li>

        <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG
    [delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

    EOT;

                        
    $objResponse->addAssign("page_","innerHTML",$innerHTML
    );

                        

                        }

                   }

                   
    //Èç¹ûûÓÐÎļþÉÏ´«

                   
    }else{

                   
    //¸üÐÂÊý¾Ý¿â

                   
    $updatesql "UPDATE `language` SET `name` = '$name',`charset` = '$charset',`ord` = '$ord' WHERE `languageid` = '$languageid' LIMIT 1"
    ;

                   if(
    $db->query($updatesql
    )){

                        
    //Èç¹ûÌí¼Ó³É¹¦

                        
    $result $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid' LIMIT 1"
    );

                        
    $image $db->fetch_array($result
    );

                        if(
    count($image)>0
    ){

                             
    $filename $image['filename'
    ];

                             }

                        
    $innerHTML 
    = <<<EOT

        <li>$languageid</li>

        <li>$name</li>

        <li><img src="../attaches/" width="21" /></li>

        <li>$charset</li>

        <li>$ord</li>

        <li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG
    [delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>

    EOT;

                        
    $objResponse->addAssign("page_","innerHTML",$innerHTML
    );

                        }

                   }

                   
    //Òþ²Ø±íµ¥

                   
    $objResponse->addAssign("h","style.display","none"
    );

              }



         return 
    $objResponse
    ;

    }

    ?>

    ÔÚµ÷ÓÃÀ©Õ¹ÉÏ´«£¬ÆäÖÐCreateLanguageÊÇphpÖд¦ÀíÉÏ´«µÄº¯Êý f1ÊÇ±íµ¥µÄid
    <scr¨©pt language="Javascr¨©pt">
        function checkForm() {
            return xajax.upload('CreateLanguage','f1');
        }

        function updateForm() {
            return xajax.upload('UpdateLanguage','f2');
        }
    </scr¨©pt>
  • Summary: ͼƬ´¦Àí³ÌÐò

    2008-1-22

    <?php
    //====================================================
    // FileName:GDImage.inc.php
    // Summary: ͼƬ´¦Àí³ÌÐò
    //====================================================

    class GDImage
    {
    var $sourcePath; //ͼƬ´æ´¢Â·¾¶
    var $galleryPath; //ͼƬËõÂÔͼandˮӡͼ´æ´¢Â·¾¶
    var $toFile = false; //ÊÇ·ñÉú³ÉÎļþ
    var $fontName; //ʹÓõÄÓ¢ÎÄTTF×ÖÌåÃû³Æ
    var $fontName_GBK;
    var $maxWidth = 500; //ͼƬ×î´ó¿í¶È
    var $maxHeight = 600; //ͼƬ×î´ó¸ß¶È

    //==========================================
    // º¯Êý: GDImage($sourcePath ,$galleryPath, $fontPath)
    // ¹¦ÄÜ: constructor
    // ²ÎÊý: $sourcePath ͼƬԴ·¾¶(°üÀ¨×îºóÒ»¸ö"/")
    // ²ÎÊý: $galleryPath Éú³ÉͼƬµÄ·¾¶
    // ²ÎÊý: $fontPath ×ÖÌå·¾¶
    //==========================================
    function GDImage($sourcePath, $galleryPath, $fontPath)
    {
    $this->sourcePath = $sourcePath;
    $this->galleryPath = $galleryPath;
    $this->fontName = $fontPath . "04B_08__.TTF";
    $this->fontName_GBK = $fontPath . "ººÒÇ×ÛÒÕÌå¼ò.ttf";
    }

    //==========================================
    // º¯Êý: makeThumb($sourFile,$width=128,$height=128)
    // ¹¦ÄÜ: Éú³ÉËõÂÔͼ(Êä³öµ½ä¯ÀÀÆ÷)
    // ²ÎÊý: $sourFile ͼƬԴÎļþ
    // ²ÎÊý: $width Éú³ÉËõÂÔͼµÄ¿í¶È
    // ²ÎÊý: $height Éú³ÉËõÂÔͼµÄ¸ß¶È
    // ·µ»Ø: 0 ʧ°Ü ³É¹¦Ê±·µ»ØÉú³ÉµÄͼƬ·¾¶
    //==========================================
    function makeThumb($sourFile,$width=102,$height=78)
    {
    $imageInfo = $this->getInfo($sourFile);
    $sourFile = $this->sourcePath . $sourFile;
    $newName = substr($imageInfo["name"], 0, strrpos($imageInfo["name"], ".")) . "_thumb.jpg";
    switch ($imageInfo["type"])
    {
    case 1: //gif
    $img = imagecreatefromgif($sourFile);
    break;
    case 2: //jpg
    $img = imagecreatefromjpeg($sourFile);
    break;
    case 3: //png
    $img = imagecreatefrompng($sourFile);
    break;
    default:
    return 0;
    break;
    }
    if (!$img)
    return 0;

    $width = ($width > $imageInfo["width"]) ? $imageInfo["width"] : $width;
    $height = ($height > $imageInfo["height"]) ? $imageInfo["height"] : $height;
    //$srcW = $imageInfo["width"];
    //$srcH = $imageInfo["height"];
    //if ($srcW * $width > $srcH * $height)
    //$height = round($srcH * $width / $srcW);
    //else
    //$width = round($srcW * $height / $srcH);
    //*
    if (function_exists("imagecreatetruecolor")) //GD2.0.1
    {
    $new = imagecreatetruecolor($width, $height);
    ImageCopyResampled($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
    }
    else
    {
    $new = imagecreate($width, $height);
    ImageCopyResized($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
    }
    //*/
    if ($this->toFile)
    {
    if (file_exists($this->galleryPath . $newName))
    unlink($this->galleryPath . $newName);
    ImageJPEG($new, $this->galleryPath . $newName);
    return $this->galleryPath . $newName;
    }
    else
    {
    ImageJPEG($new);
    }
    ImageDestroy($new);
    ImageDestroy($img);

    }
    //==========================================
    // º¯Êý: waterMark($sourFile, $text)
    // ¹¦ÄÜ: ¸øÍ¼Æ¬¼Óˮӡ
    // ²ÎÊý: $sourFile ͼƬÎļþÃû
    // ²ÎÊý: $text Îı¾Êý×é(°üº¬¶þ¸ö×Ö·û´®)
    // ·µ»Ø: 1 ³É¹¦ ³É¹¦Ê±·µ»ØÉú³ÉµÄͼƬ·¾¶
    //==========================================
    function waterMark($sourFile, $text)
    {
    $imageInfo = $this->getInfo($sourFile);
    $sourFile = $this->sourcePath . $sourFile;
    $newName = substr($imageInfo["name"], 0, strrpos($imageInfo["name"], ".")) . "_mark.jpg";
    switch ($imageInfo["type"])
    {
    case 1: //gif
    $img = imagecreatefromgif($sourFile);
    break;
    case 2: //jpg
    $img = imagecreatefromjpeg($sourFile);
    break;
    case 3: //png
    $img = imagecreatefrompng($sourFile);
    break;
    default:
    return 0;
    break;
    }
    if (!$img)
    return 0;

    $width =$this->maxWidth;
    $height =$this->maxHeight;
    $srcW = $imageInfo["width"];
    $srcH = $imageInfo["height"];
    if ($srcW * $width > $srcH * $height)
    $height = round($srcH * $width / $srcW);
    else
    $width = round($srcW * $height / $srcH);
    if (function_exists("imagecreatetruecolor")) //GD2.0.1
    {
    $new = imagecreatetruecolor($width, $height);
    ImageCopyResampled($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
    }
    else
    {
    $new = imagecreate($width, $height);
    ImageCopyResized($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
    }
    $white = imageColorAllocate($new, 255, 255, 255);
    $black = imageColorAllocate($new, 0, 0, 0);
    $hoariness = imageColorAllocateAlpha($new, 255, 235, 250,70);
    $alpha = imageColorAllocateAlpha($new, 230, 230, 230, 60);
    ImageFilledRectangle($new, 0, $height-26, $width, $height, $alpha);
    ImageFilledRectangle($new, 13, $height-20, 15, $height-7, $black);
    ImageTTFText($new, 40, 0, 10, $height-100, $hoariness, $this->fontName_GBK, $text[0]);
    ImageTTFText($new, 4.9, 0, 20, $height-14, $black, $this->fontName, $text[1]);
    ImageTTFText($new, 4.9, 0, 20, $height-6, $black, $this->fontName, $text[2]);
    if ($this->toFile)
    {
    if (file_exists($this->galleryPath . $newName))
    @unlink($this->galleryPath . $newName);
    ImageJPEG($new, $this->galleryPath . $newName);
    return $this->galleryPath . $newName;
    }
    else
    {
    ImageJPEG($new);
    }
    clearstatcache();
    ImageDestroy($new);
    ImageDestroy($img);
    }
    //==========================================
    // º¯Êý: displayThumb($file)
    // ¹¦ÄÜ: ÏÔʾָ¶¨Í¼Æ¬µÄËõÂÔͼ
    // ²ÎÊý: $file ÎļþÃû
    // ·µ»Ø: 0 ͼƬ²»´æÔÚ
    //==========================================
    function displayThumb($file)
    {
    $thumbName = substr($file, 0, strrpos($file, ".")) . "_thumb.jpg";
    $file = $this->galleryPath . $thumbName;
    if (!file_exists($file))
    return 0;
    clearstatcache();
    return $file;
    }
    //==========================================
    // º¯Êý: displayMark($file)
    // ¹¦ÄÜ: ÏÔʾָ¶¨Í¼Æ¬µÄˮӡͼ
    // ²ÎÊý: $file ÎļþÃû
    // ·µ»Ø: 0 ͼƬ²»´æÔÚ
    //==========================================
    function displayMark($file)
    {
    $markName = substr($file, 0, strrpos($file, ".")) . "_mark.jpg";
    $file = $this->galleryPath . $markName;
    if (!file_exists($file))
    return 0;
    return $file;
    }
    //==========================================
    // º¯Êý: getInfo($file)
    // ¹¦ÄÜ: ·µ»ØÍ¼ÏñÐÅÏ¢
    // ²ÎÊý: $file Îļþ·¾¶
    // ·µ»Ø: ͼƬÐÅÏ¢Êý×é
    //==========================================
    function getInfo($file)
    {
    $file = $this->sourcePath . $file;
    $data = getimagesize($file);
    $imageInfo["width"] = $data[0];
    $imageInfo["height"]= $data[1];
    $imageInfo["type"] = $data[2];
    $imageInfo["name"] = basename($file);
    return $imageInfo;
    }
    }
    ?>

  • php·ÖÒ³

    2008-1-22

    <?
    //ΪÁ˱ÜÃâÖØ¸´°üº¬Îļþ¶øÔì³É´íÎ󣬼ÓÁËÅжϺ¯ÊýÊÇ·ñ´æÔÚµÄÌõ¼þ£º
    if(!function_exists(pageft)){
    //¶¨Ò庯Êýpageft(),Èý¸ö²ÎÊýµÄº¬ÒåΪ£º
    //$totle£ºÐÅÏ¢×ÜÊý£»
    //$displaypg£ºÃ¿Ò³ÏÔʾÐÅÏ¢Êý£¬ÕâÀïÉèÖÃΪĬÈÏÊÇ20£»
    //$url£º·ÖÒ³µ¼º½ÖеÄÁ´½Ó£¬³ýÁ˼ÓÈ벻ͬµÄ²éѯÐÅÏ¢¡°page¡±ÍâµÄ²¿·Ö¶¼ÓëÕâ¸öURLÏàͬ¡£
    //¡¡¡¡¡¡Ä¬ÈÏÖµ±¾¸ÃÉèΪ±¾Ò³URL£¨¼´$_SERVER["REQUEST_URI"]£©£¬µ«ÉèÖÃĬÈÏÖµµÄÓÒ±ßÖ»ÄÜΪ³£Á¿£¬ËùÒÔ¸ÃĬÈÏÖµÉèΪ¿Õ×Ö·û´®£¬ÔÚº¯ÊýÄÚ²¿ÔÙÉèÖÃΪ±¾Ò³URL¡£
    function pageft($totle,$displaypg=20,$url=''){

    //¶¨Ò弸¸öÈ«¾Ö±äÁ¿£º
    //$page£ºµ±Ç°Ò³Â룻
    //$firstcount£º£¨Êý¾Ý¿â£©²éѯµÄÆðʼÏ
    //$pagenav£ºÒ³Ãæµ¼º½Ìõ´úÂ룬º¯ÊýÄÚ²¿²¢Ã»Óн«ËüÊä³ö£»
    //$_SERVER£º¶ÁÈ¡±¾Ò³URL¡°$_SERVER["REQUEST_URI"]¡±Ëù±ØÐë¡£
    global $page,$firstcount,$pagenav,$_SERVER;

    //Ϊʹº¯ÊýÍⲿ¿ÉÒÔ·ÃÎÊÕâÀïµÄ¡°$displaypg¡±£¬½«ËüÒ²ÉèΪȫ¾Ö±äÁ¿¡£×¢ÒâÒ»¸ö±äÁ¿ÖØÐ¶¨ÒåΪȫ¾Ö±äÁ¿ºó£¬Ô­Öµ±»¸²¸Ç£¬ËùÒÔÕâÀï¸øËüÖØÐ¸³Öµ¡£
    $GLOBALS["displaypg"]=$displaypg;

    if(!$page) $page=1;

    //Èç¹û$urlʹÓÃĬÈÏ£¬¼´¿ÕÖµ£¬Ôò¸³ÖµÎª±¾Ò³URL£º
    if(!$url){ $url=$_SERVER["REQUEST_URI"];}

    //URL·ÖÎö£º
    $parse_url=parse_url($url);
    $url_query=$parse_url["query"]; //µ¥¶ÀÈ¡³öURLµÄ²éѯ×Ö´®
    if($url_query){
    //ÒòΪURLÖпÉÄܰüº¬ÁËÒ³ÂëÐÅÏ¢£¬ÎÒÃÇÒª°ÑËüÈ¥µô£¬ÒÔ±ã¼ÓÈëеÄÒ³ÂëÐÅÏ¢¡£
    //ÕâÀïÓõ½ÁËÕýÔò±í´ïʽ£¬Çë²Î¿¼¡°PHPÖеÄÕý¹æ±í´ïʽ¡±£¨http://www.pconline.com.cn/pcedu/empolder/wz/php/10111/15058.html£©
    $url_query=ereg_replace("(^|&)page=$page","",$url_query);

    //½«´¦ÀíºóµÄURLµÄ²éѯ×Ö´®Ìæ»»Ô­À´µÄURLµÄ²éѯ×Ö´®£º
    $url=str_replace($parse_url["query"],$url_query,$url);

    //ÔÚURLºó¼Ópage²éѯÐÅÏ¢£¬µ«´ý¸³Öµ£º
    if($url_query) $url.="&page"; else $url.="page";
    }else {
    $url.="?page";
    }

    //Ò³Âë¼ÆË㣺
    $lastpg=ceil($totle/$displaypg); //×îºóÒ³£¬Ò²ÊÇ×ÜÒ³Êý
    $page=min($lastpg,$page);
    $prepg=$page-1; //ÉÏÒ»Ò³
    $nextpg=($page==$lastpg ? 0 : $page+1); //ÏÂÒ»Ò³
    $firstcount=($page-1)*$displaypg;

    //¿ªÊ¼·ÖÒ³µ¼º½Ìõ´úÂ룺
    $pagenav="ÏÔʾµÚ <B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B> Ìõ¼Ç¼£¬¹² $totle Ìõ¼Ç¼<BR>";

    //Èç¹ûÖ»ÓÐÒ»Ò³ÔòÌø³öº¯Êý£º
    if($lastpg<=1) return false;
    $pagenav.=" <a href='$url=1' target=_self>Ê×Ò³</a> ";
    if($prepg) $pagenav.=" <a href='$url=$prepg' target=_self>ǰҳ</a> "; else $pagenav.=" ǰҳ ";
    if($nextpg) $pagenav.=" <a href='$url=$nextpg' target=_self>ºóÒ³</a> "; else $pagenav.=" ºóÒ³ ";
    $pagenav.=" <a href='$url=$lastpg' target=_self>βҳ</a> ";

    //ÏÂÀ­Ìø×ªÁÐ±í£¬Ñ­»·ÁгöËùÓÐÒ³Â룺
    $pagenav.="¡¡µ½µÚ <select name='topage' size='1' ¨­nchange='window.location=\"$url=\"+this.value'>\n";
    for($i=1;$i<=$lastpg;$i++){
    if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
    else $pagenav.="<option value='$i'>$i</option>\n";
    }
    $pagenav.="</select> Ò³£¬¹² $lastpg Ò³";
    }
    }
    ?>

  • smarty ¤Î ³ÌÐòÉè¼Æ²¿·Ö

    2008-1-18

      ×î½üÔÚÂÛ̳¿´×ÅÓÐÐí¶àÅóÓÑÔÚsmartyÅäÖ÷½Ã滹´æÔÚÒÉÎÊ ÏÖÔÚ¾ÍÕûÀíһϺʹó¼ÒÌÖÂÛÒ»ÏÂ

      Ê×ÏÈÀ´½éÉÜÒ»ÏÂ.phpÎļþÖеÄÒ»Ð©ÔªËØ¡£

     

    <?php
    /*********************************************
    *
    * ×÷ Õߣº bush
    * QQ:20602866
    *
    *********************************************/
    include_once("./comm/Smarty.class.php"); 
    //°üº¬smartyÀàÎļþ

    $smarty = new Smarty(); 
    //½¨Á¢smartyʵÀý¶ÔÏó$smarty
    $smarty->template_dir "./templates";
    //ÉèÖÃÄ£°åĿ¼
    $smarty->compile_dir "./templates_c"
    //ÉèÖñàÒëĿ¼


    //****´ó¼Ò×¢Ò⣬ÕâÀïÎÒÊÇÎÒмÓÈëµÄ****//

    $tpl->cache_dir "./cache"
    //ÉèÖûº´æÄ¿Â¼
    $smarty->cache_lifetime 60 60 24
    //ÉèÖûº´æÊ±¼ä
    $smarty->caching true
    //ÉèÖûº´æ·½Ê½

    //----------------------------------------------------
    //×óÓұ߽ç·û£¬Ä¬ÈÏΪ{}£¬µ«Êµ¼ÊÓ¦Óõ±ÖÐÈÝÒ×ÓëJavascr¨©pt
    //Ïà³åÍ»£¬ËùÒÔ½¨ÒéÉè³É<{}>»òÆäËü¡£
    //----------------------------------------------------
    $smarty->left_delimiter "<{"

    $smarty->right_delimiter "}>"
    ;

    $smarty->assign("name""victor_lee"); 
    //½øÐÐÄ£°å±äÁ¿Ìæ»»

    //±àÒë²¢ÏÔʾλÓÚ./templatesϵÄindex.tplÄ£°å
    $smarty->display("index.tpl"
    ); 
    ?> 

      ÎÒÃÇ¿ÉÒÔ¿´µ½£¬smartyµÄ³ÌÐò²¿·Öʵ¼Ê¾ÍÊÇ·ûºÏphpÓïÑԹ淶µÄÒ»×é´úÂ룬ÎÒÃÇÒÀ´ÎÀ´½âÊÍһϣº
    1¡£/**/Óï¾ä£º
    °üº¬µÄ²¿·ÖΪ³ÌÐòƪͷעÊÍ¡£Ö÷ÒªµÄÄÚÈÝÓ¦¸ÃΪ¶Ô³ÌÐòµÄ×÷Ó㬰æÈ¨Óë×÷Õß¼°±àдʱ¼ä×öÒ»¸ö¼òµ¥µÄ½éÉÜ£¬ÕâÔÚsmartyÖв»ÊDZØÐèµÄ£¬µ«´Ó³ÌÐòµÄ·ç¸ñÀ´½²£¬ÕâÊÇÒ»¸öºÃµÄ·ç¸ñ¡£

    2¡£include_onceÓï¾ä£º
    Ëü½«°²×°µ½ÍøÕ¾µÄsmartyÎļþ°üº¬µ½µ±Ç°ÎļþÖУ¬×¢Òâ°üº¬µÄ·¾¶Ò»¶¨ÒªÐ´ÕýÈ·¡£

    3¡£$smarty = new Smarty():
    ÕâÒ»¾äн¨Ò»¸öSmarty¶ÔÏó$smarty,¼òµ¥µÄÒ»¸ö¶ÔÏóµÄʵÀý»¯¡£

    4¡£$smarty->template_dir = "" :
    ÕâÒ»¾äÖ¸Ã÷$smarty¶ÔÏóʹÓÃtplÄ£°åʱµÄ·¾¶£¬ËüÊÇÒ»¸öĿ¼£¬ÔÚûÓÐÕâÒ»¾äʱ£¬SmartyĬÈϵÄÄ£°å·¾¶Îªµ±Ç°Ä¿Â¼µÄtemplatesĿ¼£¬Êµ¼ÊÔÚд³ÌÐòʱ£¬ÎÒÃÇÒª½«ÕâÒ»¾äдÃ÷£¬ÕâÒ²ÊÇÒ»ÖֺõijÌÐò·ç¸ñ¡£
    5¡£$smarty->compile_dir = "" :
    ÕâÒ»¾äÖ¸Ã÷$smarty¶ÔÏó½øÐбàÒëʱµÄĿ¼¡£ÔÚÄ£°åÉè¼ÆÆªÎÒÃÇÒѾ­ÖªµÀSmartyÊÇÒ»ÖÖ±àÒëÐÍÄ£°åÓïÑÔ£¬¶øÕâ¸öĿ¼£¬¾ÍÊÇËü±àÒëÄ£°åµÄĿ¼£¬ÕâÀïҪעÒ⣬Èç¹ûÕ¾µãλÓÚ*nix·þÎñÆ÷ÉÏ£¬ÇëÈ·±£compile_dirÀﶨÒåµÄÕâ¸öĿ¼¾ßÓпÉд¿É¶ÁȨÏÞ£¬Ä¬ÈÏÇé¿öÏÂËüµÄ±àÒëĿ¼Êǵ±Ç°Ä¿Â¼ÏµÄtemplates_c£¬³öÓÚͬÑùµÄÀíÓÉÎÒÃǽ«ÆäÃ÷È·µÄд³öÀ´¡£

    6¡£$smarty->left_delimiterÓë$smarty->right_delimiter:
    Ö¸Ã÷ÔÚ²éÕÒÄ£°å±äÁ¿Ê±µÄ×óÓÒ·Ö¸î·û¡£Ä¬ÈÏÇé¿öÏÂΪ"{"Óë"}"£¬µ«ÔÚʵ¼ÊÖÐÒòΪÎÒÃÇÒªÔÚÄ£°åÖÐʹÓÃ<scr¨©pt>,scr¨©ptÖеĺ¯Êý¶¨ÒåÄÑÃâ»áʹÓÃ{}£¬ËäÈ»ËüÓÐ×Ô¼ºµÄ½â¾ö°ì·¨£¬µ«Ï°¹ßÉÏÎÒÃǽ«ËüÖØÐ¶¨ÒåΪ"<{"Óë"}>"»òÊÇ"<!--{"Óë"}-->"»òÆäËü±êÖ¾·û£¬×¢Ò⣬Èç¹ûÔÚÕâÀﶨÒåÁË×óÓÒ·Ö¸î·ûºó£¬ÔÚÄ£°åÎļþÖÐÏàÓ¦µÄҪʹÿһ¸ö±äÁ¿Ê¹ÓÃÓ붨ÒåÏàͬµÄ·ûºÅ£¬ÀýÈçÔÚÕâÀïÖ¸¶¨Îª"<{"Óë"}>"£¬tplÄ£°åÖÐÒ²ÒªÏàÓ¦µÄ½«{$name}±ä³É<{$name}>,ÕâÑù³ÌÐò²Å¿ÉÒÔÕýÈ·µÄÕÒµ½Ä£°å±äÁ¿¡£


    7¡£$tpl->cache_dir = "./cache";:
    ¸æËßSmartyÊä³öµÄÄ£°åÎļþ»º´æµÄλÖá£ÉÏһƪÎÒÃÇÖªµÀSmarty×î´óµÄÓŵãÔÚÓÚËü¿ÉÒÔ»º´æ£¬ÕâÀï¾ÍÊÇÉèÖûº´æµÄĿ¼¡£Ä¬ÈÏÇé¿öÏÂΪµ±Ç°Ä¿Â¼ÏµÄcacheĿ¼£¬Óëtemplates_cĿ¼Ï൱£¬ÔÚ*nixϵͳÖÐÎÒÃÇҪȷ±£ËüµÄ¿É¶Á¿ÉдÐÔ¡£

    8. $smarty->cache_lifetime = 60 * 60 * 24:

    ÕâÀォÒÔÃëΪµ¥Î»½øÐмÆË㻺´æÓÐЧµÄʱ¼ä¡£µÚÒ»´Î»º´æÊ±¼äµ½ÆÚʱµ±SmartyµÄcaching±äÁ¿ÉèÖÃΪtrueʱ»º´æ½«±»Öؽ¨¡£µ±ËüµÄȡֵΪ-1ʱ±íʾ½¨Á¢ÆðµÄ»º´æ´Ó²»¹ýÆÚ£¬Îª0ʱ±íʾÔÚ³ÌÐòÿ´ÎÖ´ÐÐʱ»º´æ×ÜÊDZ»ÖØÐ½¨Á¢¡£ÉÏÃæµÄÉèÖñíʾ½«cache_lifetimeÉèÖÃΪһÌì¡£

    9. $smarty->caching = 1:
    Õâ¸öÊôÐÔ¸æËßSmartyÊÇ·ñÒª½øÐлº´æÒÔ¼°»º´æµÄ·½Ê½¡£Ëü¿ÉÒÔÈ¡3¸öÖµ£¬0£ºSmartyĬÈÏÖµ£¬±íʾ²»¶ÔÄ£°å½øÐлº´æ£»1£º±íʾSmarty½«Ê¹Óõ±Ç°¶¨ÒåµÄcache_lifetimeÀ´¾ö¶¨ÊÇ·ñ½áÊøcache£»2£º±íʾSmarty½«Ê¹ÓÃÔÚcache±»½¨Á¢Ê±Ê¹ÓÃcache_lifetimeÕâ¸öÖµ¡£Ï°¹ßÉÏʹÓÃtrueÓëfalseÀ´±íʾÊÇ·ñ½øÐлº´æ¡£

    10. $smarty->assign("name", "victor-lee")£º
    ¸ÃÊýµÄÔ­ÐÍΪassign(string varname, mixed var),varnameΪģ°åÖÐʹÓõÄÄ£°å±äÁ¿£¬varÖ¸³öÒª½«Ä£°å±äÁ¿Ìæ»»µÄ±äÁ¿Ãû£»ÆäµÚ¶þÖÖÔ­ÐÎΪassign(mixed var),ÎÒÃÇÒªÔÚºóÃæµÄÀý×ÓÏêϸµÄ½²½âÕâ¸ö³ÉÔ±º¯ÊýµÄʹÓ÷½·¨£¬assignÊÇSmartyµÄºËÐĺ¯ÊýÖ®Ò»£¬ËùÓжÔÄ£°å±äÁ¿µÄÌæ»»¶¼ÒªÊ¹ÓÃËü¡£

    11. $smarty->display("index.tpl"):
    ¸Ãº¯ÊýÔ­ÐÎΪdisplay(string varname),×÷ÓÃΪÏÔʾһ¸öÄ£°å¡£¼òµ¥µÄ½²£¬Ëü½«·ÖÎö´¦Àí¹ýµÄÄ£°åÏÔʾ³öÀ´£¬ÕâÀïµÄÄ£°åÎļþ²»ÓüÓ·¾¶£¬Ö»ÒªÊ¹ÓÃÒ»¸öÎļþÃû¾Í¿ÉÒÔÁË£¬Ëü·¾¶ÎÒÃÇÒѾ­ÔÚ$smarty->templates(string path)Öж¨Òå¹ýÁË¡£

    ³ÌÐòÖ´ÐÐÍêºóÎÒÃÇ¿ÉÒÔ´ò¿ªµ±Ç°Ä¿Â¼ÏµÄtemplates_cÓëcacheĿ¼£¬¾Í»á·¢ÏÖÔÚϱ߶à³öһЩ%%µÄĿ¼£¬ÕâЩĿ¼¾ÍÊÇSmartyµÄ±àÒëÓ뻺´æÄ¿Â¼£¬ËüÓɳÌÐò×Ô¶¯Éú³É£¬²»ÒªÖ±½Ó¶ÔÕâЩÉú³ÉµÄÎļþ½øÐÐÐ޸ġ£
    ÒÔÉÏÎÒ¼òµ¥µÄ°ÑSmarty³ÌÐòÖеÄһЩ³£ÓõĻù±¾ÔªËؽéÉÜÁËһϣ¬ÔÚºó±ßµÄÀý×ÓÖÐÄã¿ÉÒÔ¿´µ½½«ËüÃǽ«±»¶à´ÎµÄʹÓá£


  • SunÄâ10ÒÚÃÀÔªÊÕ¹ºMySQL ÔÙÈ·Á¢ÍøÂçÖÐÐĵØÎ»

    2008-1-17

      SunÖÜÈýÐû²¼£¬×¼±¸ÒÔ10ÒÚÃÀÔªÊÕ¹ºMySQL¿ªÔ´Êý¾Ý¿â¹«Ë¾¡£ 

        ¾ÝϤ£¬Sun½«Ö§¸¶´óÔ¼8ÒÚÃÀÔªÏÖ½ð¸øMySQL£¬ÒÔ»ñµÃÆä˽ļ¹ÉƱ£¬ÁíÍ⣬Sun½«Ö§¸¶´óÔ¼2ÒÚÃÀÔª¹ÉƱÆÚȨ¸øMySQL¡£ÔÚÊÕ¹ºÍê³ÉÖ®ºó£¬MySQLÊ×ϯִÐйÙMarten Mickos½«½øÈëSunµÄ¸ß¹Ü²ã¡£ 

        ÕâÏîÊÕ¹º¶ÔÓÚSunÀ´ËµÊÇÒ»¸ö´óµ¨µÄ¾Ù¶¯£¬ÎªÁË»ñµÃ¸ü¶àµÄÈí¼þÒµÎñÊÕÈ룬Sun¹«Ë¾´ËǰÒѾ­½ÓÊÜÁË¿ªÔ´Èí¼þ£¬²¢ÇÒ×Ô¼ºÒ²ÔÚ´ÓÊ¿ªÔ´Èí¼þµÄ¿ª·¢¡£µ½Ä¿Ç°ÎªÖ¹£¬Sun¹«Ë¾ÒѾ­ÔÚÏúÊÛPostgreSQL¿ªÔ´Êý¾Ý¿âµÄ·þÎñÖ§³Ö¡£ 

        SunµÄ¹ÙԱ˵£¬ËûÃǽ«¼ÌÐøÖ§³ÖPostgreSQL£¬²¢ÇÒ¼ÌÐøÓëÊý¾Ý¿â¾ÞÍ·¼×¹ÇÎĽøÐкÏ×÷¡£ 

        MySQL³ÉÁ¢ÓÚ1995Ä꣬ËüÊÇ×î³É¹¦µÄÒ»¼Ò¿ªÔ´Êý¾Ý¿â¹«Ë¾¡£¹«Ë¾¹ãÊÜ»¶Ó­µÄ²úÆ·°üÀ¨Linux Apache Web server£¨LAMP£©£¬MySQLÒÔ¼°PHP¿ª·¢ÓïÑÔ£¬ºóÕß±»¹ã·ºÓ¦ÓÃÓÚ»¥ÁªÍøÉÏ¡£ 

        Mickos´Ëǰ±íʾ£¬ËûÃÇÇãÏòÓÚÉÏÊУ¬¶ø²»ÊDZ»ÊÕ¹º¡£ 

        MySQLÉÌҵģʽÊÇ·ÅÆúÁËÈí¼þµÄÔ´´úÂ룬²¢ÇÒÃâ·Ñ½«ÆäÊý¾Ý¿âÈí¼þÏòÓû§Ìṩ£¬¹«Ë¾½ö½öÔÚÌṩÈí¼þÖ§³ÖÓë·þÎñʱ²ÅÊÕÈ¡·ÑÓá£Sanford C. Bernstein·ÖÎöʦToni Sacconaghi±íʾ£¬Ëû¹À¼ÆMySQLÈ¥ÄêµÄÊÕ¹ºÎª6ǧÍòÃÀÔªÖÁ7ǧÍòÃÀÔªÖ®¼ä¡£ 

        SunÊ×ϯִÐйÙÒÔ¼°×ܲÃJonathan Schwartz³Æ£¬ÊÕ¹ºMySQLÊÇSun¹«Ë¾ÀúÊ·ÉÏ×îÖØÒªµÄÒ»ÏîÊÕ¹º¡£ 

        ÓÐÁËMySQL£¬Sun¿ÉÒÔ»ñµÃMySQLÅÓ´óµÄÓû§Èº£¬²¢ÇÒÓлú»áÏúÊÛÓ²¼þ¼°¸½¼ÓÈí¼þ¡£´óÔ¼75% MySQLÊý¾Ý¿â°²×°ÔËÐÐÔÚSunÒÔÍâµÄ·þÎñÆ÷ÉÏ¡£ÓдóÔ¼20%µÄMySQLÔËÐÐÓÚSunµÄSolaris²Ù×÷ϵͳÖУ¬¾ø´ó¶àÊý¶¼ÔËÐÐÓÚLinuxƽ̨ÉÏ¡£ 

        Schwartz˵£º¡°ÊÕ¹ºÖ»ÓÐÒ»¸öÄ¿µÄ£ºÖØÐÂÈ·Á¢SunÔÚÍøÂçÒÔ¼°ÍøÂç¾­¼Ãƽ̨ÖÐÐĵĵØÎ»¡£¡± 

        ÔÚÆäÍøÂçÈÕÖ¾ÖУ¬Sun CEO Jonathan Schwartz ±íʾ£¬ÔÚÊÕ¹ºÍê³É֮ǰ£¬Sun½«¿ªÊ¼ÎªMySQL¿Í»§Ìṩ֧³Ö¡£ 

        Ëû˵£¬SunÊÇÇãÏòΪ´óÐÍÆóÒµÐèÇóÌṩÕâÖÖÖ§³Ö·þÎñ¡£ 

        SchwartzÈÏΪ£º¡°MySQLÊÇÿ¸öÍøÂ繫˾»ù´¡ÉèÊ©µÄÒ»²¿·Ö£¬ºÜ¶à´«Í³¹«Ë¾ÒѾ­ÔÚʹÓÃMySQL£¬ÏóÆû³µ¹«Ë¾£¬½ðÈÚ»ú¹¹£¬ÒøÐÐÁãÊÛÉ̵ȵȣ¬ËûÃÇÖеĺܶàÒѾ­ÔڵȴýÓÐõÒÉí²Æ¸»5°ÙÇ¿µÄ´óÆóÒµÄܹ»ÎªËûÃÇÌṩ֧³Ö£¬ÎªÆäÌṩ¹Ø¼üÈÎÎñµÄÈ«ÇòÐÔÖ§³Ö¡£¡± 

        Schwartz»¹±íʾ£¬Á½¼Ò¹«Ë¾²úÆ·½«½øÐÐÈںϣ¬±ÈÈ繫˾½«ÓÅ»¯MySQLµÄÆì½¢Êý¾Ý¿âÒÔ¼°Falcon´æ´¢ÒýÇæ£¬ÒÔ±ãÈÃËüÃÇÔÚSunµÄSolaris²Ù×÷ϵͳÒÔ¼°·þÎñÆ÷ÉÏÔËÐС£ 

        10ÒÚÃÀÔªÊÕ¹º¶îÒѾ­±íÃ÷£¬¿ªÔ´Èí¼þÒѾ­´ó´óµß¸²ÁËÈí¼þÒµÎñ¡£ 

        ´ó²¿·Ö³É¹¦µÄ¿ªÔ´¹«Ë¾ÒѾ­±»ÊÕ¹º¡£ 

        4Äêǰ£¬NovellÒÔ2.1ÒÚÃÀÔªÃÀÔªÊÕ¹ºÁËSUSE Linux¡£2006Ä꣬ºìñÒÔ4ÒÚ¶àÃÀÔªÊÕ¹ºÁËJBoss¡£ÔÚÈ¥Ä꣬CitrixÓÃ5ÒÚÃÀÔªÊÕ¹ºÁËXenSourceÐéÄâÈí¼þÌṩÉÌ¡£ 

        451 Group·ÖÎöʦRaven Zachary˵£º¡°ÕâÊÇSunµÄÖØ´óÐж¯¡£¡± 

        È»¶ø£¬Õâ×®ÊÕ¹ºÒ²²úÉúÁËһЩDZÔÚµÄÀ§ÄÑ¡£Zachary˵£º¡°SunÓë¼×¹ÇÎĵĹØÏµ½«±äµÃ΢ÃÁ½¼Ò¹«Ë¾¶¼¶ÔPostgreSQLÊý¾Ý¿â½øÐÐÁËͶ×Ê¡£¡± 

        ËûÏàÐÅ£¬»¹ÓбðµÄ³§ÉÌÔø¾­×·Çó¹ýMySQL£¬±ÈÈçºìñ£¬Sybase£¬»ÝÆÕÒÔ¼°¼×¹ÇÎÄ¡£2006Ä꣬MickosÔø¾­Ö¤Êµ£¬¼×¹ÇÎÄÊÔͼÊÕ¹ºMySQL¡£ 

        MySQLÔÚ¼ÓÖݵÄCupertinoÒÔ¼°ÈðµäµÄUppsalaÉèÓÐ×ܲ¿£¬Ô±¹¤ÈËÊý´óԼΪ4°ÙÈË¡£¹«Ë¾µÄͶ×ÊÕß°üÀ¨Benchmark Capital£¬Index Ventures£¬IVP£¬Ó¢Ìضû£¬SAPÒÔ¼°ºìñ¡£ 

        Ô¤¼ÆÊÕ¹º½«ÔÚSunµÄµÚÈý²ÆÕþ¼¾¶ÈÄ©»òÕßµÚËIJƼ¾³õÍê³É£¬¾ßÌåʱ¼äΪÈýÔµס£
    À´Ô´£ºCNET¿Æ¼¼×ÊÑ¶Íø ±à¼­£ºÑ©ËÉ