Xlight FTP ªA°È¾¹ À°§U¤åÀÉ

¦p¦ó¦bXlight FTPªA°È¾¹¨Ï¥Î¼Æ¾Ú®w¦sÀx¹Lµ{

Xlight FTPªA°È¾¹¥i¥H°t¸m¨Ï¥Î¼Æ¾Ú®w¦sÀx¹Lµ{»{ÃÒftp¥Î¤á. ¥¦´£¨Ñ¤FÆF¬¡©Ê¥H¶°¦¨Xlight FTPªA°È¾¹¨ì¨ä¥LÃþ«¬¼Æ¾Ú®wÀ³.

¦b§Ú­Ì¶}©l¦sÀx¹Lµ{«ü«n¤§«e, §Ú­Ì»Ý­n¸ÑÄÀ¤@¨ÇÃö©óODBC¥\¯à¦p¦ó¦bXlight FTPªA°È¾¹¤º³¡¹B§@.

Xlight FTPªA°È¾¹¨Ï¥Î2­Ó¼Æ¾Ú®wªí¦sÀx¥Î¤á³]¸m. Xlight FTPªA°È¾¹ODBC¥\¯à³Ì¥D­nªºªí¬O"acct_table", ¥¦¦sÀx¤@­Ó¥Î¤á°ò¥»ªº³]¸m, ¨Ò¦phost_id, host_port, ¥Î¤á¦W, ¤f¥O©M¥Lªº²Õ, ¥D¥Ø¿ý©M¥D¥Ø¿ýÅv­­µ¥. ²Ä¤G­Óªí¬O"acct_param_table", ¥Ñ¦b"acct_table"¬d¸ßªð¦^ªº"param_index"¦C°µ¯Á¤Þ. ¥¦¦sÀx¥Î¤áªº¨ä¥L³]¸m, ³o¨Ç³]¸m¥i¥H§@¬°©Ò¦³¥Î¤áªº°Ñ¼Æ¼ÒªO.

·í¥Î¤áµn¿ý¨ìFTPªA°È¾¹, Xlight FTPªA°È¾¹¸Ì±Nµo°e¤G¦¸SQL¬d¸ß¨ì³o­Ó¼Æ¾Ú®w, ÅçÃÒ¥Lªº¤f¥O©MÀò±o¥Lªº³]¸m. ²Ä¤@¦¸SQL¬d¸ß¥Î³o­Ó¥Î¤á¦W©M¤f¥O, ¦b¼Æ¾Ú®w¬d§ä²Å¦X°O¿ý, ¨Ã¥BÀò±o°ò¥»ªº°Ñ¼Æ, ¨Ò¦p"home_path", "home_perm"µ¥. ²Ä¤@¦¸SQL¬d¸ßªð¦^ªº"param_index"­È¬°¯Á¤Þ±N¥Î©ó²Ä¤G¦¸SQL¬d¸ß. ¦pªG²Ä¤@¦¸SQL¬d¸ß¤£ªð¦^"param_index", Xlight FTPªA°È¾¹±N¤£·|µo°e²Ä¤G¦¸SQL¬d¸ß. ²Ä¤G¦¸SQL¬d¸ß±N¬d¸ß¼Æ¾Ú®wªí¡uacct_param_table¡vÀò±o¦¹¥Î¤áªº§ó¦h°Ñ¼Æ.

¦bXlight FTPªA°È¾¹¨Ï¥Î¼Æ¾Ú®w¦sÀx¹Lµ{

³\¦h¼Æ¾Ú®w¨t²Î¤ä«ù¦sÀx¹Lµ{. §Ú­Ì¨Ï¥ÎMySQL¼Æ¾Ú®w§@¬°¨Ò¤l. ¨Ï¥ÎMySQL¤§«e, §A¥²¶·¤U¸ü³Ì·sªº MySQL ODBC Driver - 3.51.16 ©ÎªÌ§ó°ªª©¥». §_«h,¦]¬°MySQLªºBug #27544, ²Ä¤G¦¸SQL¬d¸ß±N·|¥¢±Ñ. ¨ä¥LÃþ«¬ªº¼Æ¾Ú®w,§A¤]³Ì¦n¤É¯Å¼Æ¾Ú®w¬ÛÀ³ªºODBC Driver¨ì³Ì·sª©¥».

¦b¨Ï¥Î¦sÀx¹Lµ{¤§«e¥²¶·³]¸m¼Æ¾Ú®wODBC¼Æ¾Ú·½. §A¥i¥H°Ñ¦Ò³o¸Ìªº³]¸m¨BÆJ.

¦b¥»¨Ò¤¤, §Ú­Ì¦³¤@­Óªí"account_info"¦b³o­Ó¼Æ¾Ú®w¸Ì. ¦¹ªí¬O¨ä¥L¼Æ¾Ú®wÀ³¥Îµ{§Ç©Ò¨Ï¥Î, ¥¦¦sÀx¥Î¤á¦W, ¤f¥O©M¥Î¤áµoªíªº¤å³¹¼Æ¥Ø(posts). §Ú­Ì¤]³Ð«Ø¤F¥t¤@­Óªí"acct_param_table", ¥¦¬OXlight FTPªA°È¾¹¤¤ªº¤@±i¼Æ¾Ú®wªí, ¥Î©ó¦sÀx¥Î¤á°Ñ¼Æ. §Ú­Ì¨S¦³³Ð«ØXlight FTPªA°È¾¹ªº¥D­n¼Æ¾Ú®wªí"acct_table ", ¦]¬°§Ú­Ì±N¨Ï¥Î¦sÀx¹Lµ{¼ÒÀÀ¨ä¥\¯à.

account_info
AccountPasswordPosts
test1test1_password20
test2test2_password120
test3test3_password300
acct_param_table
param_indexmax_down_speed
010
150
2100

.

¤U­±¥N½X¬O½d¨ÒMySQL¦sÀx¹Lµ{test () ¡A¥¦±µ¨ü2­Ó°Ñ¼Æ, username_in©Mpassword_in.

DELIMITER $$
DROP PROCEDURE IF EXISTS test $$
CREATE PROCEDURE test(username_in VARCHAR(65), password_in VARCHAR(65))
main: BEGIN
  DECLARE user_name VARCHAR(65);
  DECLARE home_path VARCHAR(255);
  DECLARE home_perm VARCHAR(10);
  DECLARE num_posts, param_index INT(10);

  SELECT `account`, `Posts`
    INTO user_name, num_posts
    FROM account_info
    WHERE account = username_in AND password = password_in;

  IF user_name != username_in THEN
    LEAVE main;
  END IF;

  SET home_perm = 'LRS';

  IF num_posts > 100 THEN
    SET param_index = 1;
    SET home_path = 'c:\\folder_1';
  ELSEIF num_posts > 200 THEN
    SET param_index = 2;
    SET home_path = 'c:\\folder_2';
  ELSE
    SET param_index = 0;
    SET home_path = 'c:\\folder_0';
  END IF;

  SELECT home_path,home_perm,param_index;

END $$
DELIMITER ;

¦sÀx¹Lµ{test()±µ¨ü©ú½X¤å¥»¤f¥Oªºpassword_in°Ñ¼Æ. §A¥²¶·¬°µêÀÀªA°È¾¹°t¸mODBC¨Ï¥Î©ú½X¤å¥»¤f¥O, ¦p¤U¹Ï©Ò¥Ü


¤W­±ªº¦sÀx¹Lµ{test()±NÀˬd¼Æ¾Ú®waccount_infoÅçÃҥΤá, ¦pªG¥Î¤á¦W©Î¤f¥O¤£²Å¦X, ±N¨S¦³µ²ªG¶°ªð¦^Xlight FTPªA°È¾¹¡A³o­Ó¥Î¤áªºÅçÃÒ±N¥¢±Ñ.

¦b¦¨¥\ªº¥Î¤á»{ÃÒ¥H«á, ³o­Óµ{§Ç±N®Ú¾Ú¥Î¤á¦b"account_info"ªíùصoªíªº¤å³¹¼Æ¥Ø(posts), ªð¦^¤£¦Pªºparam_index, home_path­È. ³Ì²×test()µ{§Ç±N¥Î»y¥y"SELECT home_path,home_perm,param_index;"ªð¦^µ²ªG¶°¨ìXlight FTPªA°È¾¹.

¦]¬°test()µ{§Ç´À´«"acct_table"ªº¥\¯à, ±zÀ³¸Ó©ñ¸m"call test('$USER','$PASS');"¦b¿ï¶µ"´À´«²Ä¤@±ø¤º³¡SQL¬d¸ß»y¥y"¤¤,¦p¤U¹Ï©Ò¥Ü.


$USER©M$PASS¬O¹w©w¸q°Ñ¼Æ, Xlight FTPªA°È´Á±N¥Îµn¿ý¥Î¤á¹ê»Úªº¥Î¤á¦W©M±K½X¦Û°Ê´À´«¥¦­Ì. ¦pªG»Ý­n¬d¸ß¤ä«ùªº¹w©w¸q°Ñ¼Æ, ½Ð¬d¾\À°§U¤â¥Uªº[¥þ§½¿ï¶µ]->[°ª¯Å]³o¤@¸`.

¦pªG±z·Q­n¸Ñ¨M¼Æ¾Ú®w¬d¸ßªº°ÝÃD¡A§A¥i¥H¿ï¾Ü³o­Ó¿ï¶µ"¦b¿ù»~¤é»xÅã¥Ü¸òÂܽոիH®§"¡A§A±N¯à¦b¿ù»~¤é»x¤¤¬Ý¨ìSQL¬d¸ß¿ù»~.