¡¡¡¡
Ò» CGIÔÀí¼°ÆäÐÔÄÜ
1) CGI¸ÅÄî
CGI¼´Í¨ÓÃÍø¹Ø½Ó¿Ú(Common Gateway Interface)£¬ËüÊÇÒ»¶Î³ÌÐò£¬ÔËÐÐÔÚ·þÎñÆ÷ÉÏ£¬Ìṩͬ¿Í»§¶ËHTMLÒ³ÃæµÄ½»»¥£¬Í¨Ë׵Ľ²CGI¾ÍÏóÊÇÒ»×ùÇÅ£¬°ÑÍøÒ³ºÍWEB·þÎñÆ÷ÖеÄÖ´ÐгÌÐòÁ¬½ÓÆðÀ´£¬Ëü°ÑHTML½ÓÊÕµÄÖ¸Áî´«µÝ¸ø·þÎñÆ÷µÄÖ´ÐгÌÐò£¬ÔÙ°Ñ·þÎñÆ÷Ö´ÐгÌÐòµÄ½á¹û·µ»¹¸øHTMLÒ³¡£
2£©CGI³ÌÐòÓïÑÔ
ÊÂʵÉÏ£¬ÈκÎÒ»ÖÖ³ÌÐòÓïÑÔ£¬Ö»ÒªÄÜÔÚ·þÎñÆ÷Ö÷»úÉÏÀûÓÃCGI½Ó¿ÚÀ´±àдӦÓóÌÐò£¬¶¼¿ÉÒÔ½Ð×÷CGI³ÌÐòÓïÑÔ¡£Ä¿Ç°×îΪÁ÷ÐеÄCGI³ÌÐòÓïÑÔÓÐËÄÖÖ£ºC£¬Shell,PerlºÍVisualBasic,ÆäËüһЩÓïÑÔÒ²ÓÐÐí¶àÈËÔÚÓã¬ÈçTCL,Fortran¼°AppleScriptµÈ¡£
3£©CGI³ÌÐòµÄÖ´ÐÐ
CGI ³ÌÐòÒ»°ãÊǸö¿ÉÖ´ÐгÌÐò¡£±àÒëºÃµÄCGI³ÌÐòÒ»°ãÒª¼¯ÖзÅÔÚÒ»¸öĿ¼Ï¡£¾ßÌå´æ·ÅµÄλÖÃËæ²Ù×÷ϵͳµÄ²»Í¬¶ø²»Í¬¡£CGI³ÌÐòµÄÖ´ÐÐÒ»°ãÓÐÁ½ÖÖµ÷Ó÷½Ê½£ºµÚÒ»ÖÖÊÇͨ¹ýURLÖ±½Óµ÷Óã¬È磺¡°http://202.114.2.182/cgi-win /cgi.exe¡±£¬ÔÚä¯ÀÀÆ÷µÄURLÀ¸ÀïÖ±½ÓдÈëÉÏÊöÃèÊö¾Í¿ÉÒÔµ÷ÓøóÌÐò£»ÁíÒ»ÖÖ·½Ê½£¬Ò²ÊÇÖ÷ÒªµÄ·½Ê½,ÊÇͨ¹ý½»»¥Ê½Ö÷Ò³ÀïµÄFORMÀ¸µ÷Óã¬Í¨³£¶¼ÊÇÓû§ÔÚÌîÍêÒ»ÕÅÊäÈëÐÅÏ¢Formºó°´È·Èϰ´Å¥Æô¶¯CGI³ÌÐò¡£
4£©CGI¹¤×÷µÄÖ÷ÒªÁ÷³Ì
CGI¹¤×÷µÄÖ÷ÒªÁ÷³ÌÊÇ£º1.Ò»¸öÓû§ÇëÇ󼤻îÒ»¸öCGIÓ¦ÓóÌÐò£»2.CGIÓ¦ÓóÌÐò½«½»»¥Ö÷Ò³ÀïÓû§ÊäÈëÐÅÏ¢ÌáÈ¡³öÀ´£»3.½«Óû§ÊäÈëµÄÐÅÏ¢´«¸ø·þÎñÆ÷Ö÷»úÓ¦ÓóÌÐò£¨ÈçÊý¾Ý¿â²éѯ¡³£»4.½«·þÎñÆ÷´¦Àí½á¹ûͨ¹ýHTMLÎļþ·µ»Ø¸øÓû§£»5.CGI½ø³Ì½áÊø¡£
5£©CGIµÄÐÔÄÜÆÀ¼Û
CGI µÄ¿çƽ̨ÐÔÄܼ«¼Ñ£¬¼¸ºõ¿ÉÒÔÔÚÈκβÙ×÷ϵͳÉÏʵÏÖ£¬ÈçDOS¡¢WINDOWS¡¢UNIX¡¢OS/2¡¢MacintoshµÈ¡£ÊµÏÖCGIµÄ±à³ÌÓïÑÔÒ²ÓкܶàÑ¡Ôñ¡£CGIµÄÓ¦ÓóÌÐòÒ»°ã¶¼ÊÇÒ»¸ö¶ÀÁ¢µÄ¿ÉÖ´ÐгÌÐò£¬ºÍWWW·þÎñÆ÷¸÷×ÔÕ¼¾Ý×Ų»Í¬µÄ½ø³Ì,¶øÇÒÒ»°ãÒ»¸öCGI³ÌÐòÖ»ÄÜ´¦ÀíÒ»¸öÓû§ÇëÇó¡£ÕâÑù£¬Ã¿ÓÐÒ»¸öÓû§ÇëÇ󣬶¼»á¼¤»îÒ»¸öCGI½ø³Ì£¬µ±Óû§ÇëÇóÊýÁ¿·Ç³£¶àʱ£¬»á´óÁ¿¼·Õ¼ÏµÍ³µÄ×ÊÔ´ÈçÄڴ棬CPUʱ¼äµÈ£¬Ôì³ÉЧÄܵÍÏ¡£
¶þ ISAPIÔÀí¼°ÆäÐÔÄÜ
1£©ISAPI¸ÅÄî
ISAPI¼´Internet Server Application Program Interface£¬ÊÇ΢ÈíÌṩµÄÒ»Ì×ÃæÏòInternet·þÎñµÄAPI½Ó¿Ú£¬ËüÄÜʵÏÖCGIÄÜÌṩµÄÈ«²¿¹¦ÄÜ£¬²¢ÔÚ´Ë»ù´¡ÉϽøÐÐÁËÀ©Õ¹£¬ÈçÌṩÁ˹ýÂËÆ÷Ó¦ÓóÌÐò½Ó¿Ú¡£ISAPI ·þÎñÆ÷À©Õ¹ÊÇ¿ÉÒÔ±» HTTP ·þÎñÆ÷¼ÓÔØºÍµ÷ÓÃµÄ DLL¡£Internet ·þÎñÆ÷À©Õ¹Ò²³ÆÎª Internet ·þÎñÆ÷Ó¦ÓóÌÐò (ISA)£¬ÓÃÓÚÔöÇ¿·ûºÏ Internet ·þÎñÆ÷ API (ISAPI) µÄ·þÎñÆ÷µÄ¹¦ÄÜ¡£ISA ͨ¹ýä¯ÀÀÆ÷Ó¦ÓóÌÐòµ÷Ó㬲¢ÇÒ½«ÏàËÆµÄ¹¦ÄÜÌṩ¸øÍ¨ÓÃÍø¹Ø½Ó¿Ú (CGI) Ó¦ÓóÌÐò¡£
2£©ISAPI³ÌÐòÓïÑÔ
ÓÉÓÚ¿ª·¢ISAPIÓ¦ÓÃÒªÓõ½Î¢ÈíµÄÒ»Ì×API,ËùÒÔÄÜÓÃÀ´¿ª·¢ISAPIÓ¦ÓõÄÓïÑÔ²»ÈçCGIÄÇô¶à¡£Ö÷ÒªÓÐVisualC++4.1ÒÔÉϰ汾,VisualBasic5.0¡¢BorlandC++5.0Ò²¿ÉÒÔ¡£
3£©ISAPIÔÀí
ISAPI µÄ¹¤×÷ÔÀíºÍCGI´óÌåÉÏÊÇÏàͬµÄ£¬¶¼ÊÇͨ¹ý½»»¥Ê½Ö÷ҳȡµÃÓû§ÊäÈëÐÅÏ¢£¬È»ºó½»·þÎñÆ÷ºǫ́´¦Àí¡£µ«ÊǶþÕßÔÚʵÏÖ»úÖÆÉÏ´óÏàÍ¥¾¶¡£ISAPIÓëCGI×î´óµÄÇø±ðÔÚÓÚ£º²»Í¬ÓÚCGI£¬ÔÚISAPIϽ¨Á¢µÄÓ¦ÓóÌÐòÊÇÒÔ¶¯Ì¬Á¬½Ó¿âµÄÐÎʽ´æÔÚ£»¶øCGIµÄÓ¦ÓóÌÐòÒ»°ã¶¼ÊÇ¿ÉÖ´ÐгÌÐò¡£
4£©ISAPI³ÌÐòµÄÖ´ÐÐ
ISAPI Ó¦ÓõŤ×÷Á÷³ÌÓëCGIÓÐһЩ²»Í¬¡£ISAPIÓ¦ÓõÄDLL²»½ö¿ÉÒÔÏóCGI³ÌÐòÒ»Ñù±»Óû§ÇëÇ󼤻»¹¿ÉÒÔ±»ÏµÍ³Ô¤Ïȼ¤»îÀ´¼àÊÓÓû§ÊäÈ룻¶ÔÓÚ±»Óû§¼¤»îµÄDLL£¬ÔÚ´¦ÀíÍêÒ»¸öÓû§ÇëÇóºó²»»áÂíÉÏÏûʧ£¬¶øÊǼÌÐø×¤ÁôÔÚÄÚ´æÖеȴý´¦Àí±ðµÄÓû§ÊäÈ룬ֱµ½¹ýÁËÒ»¶Îʱ¼äºóһֱûÓÐÓû§ÊäÈë¡£
5£©5ISAPIÐÔÄÜÆÀ¼Û
Ò»¸öISAPIµÄDLL£¬¿ÉÒÔÔÚ±»Óû§ÇëÇ󼤻îºó³¤×¤Äڴ棬µÈ´ýÓû§µÄÁíÒ»¸öÇëÇ󣬻¹¿ÉÒÔÔÚÒ»¸öDLLÀïÉèÖöà¸öÓû§ÇëÇó´¦Àíº¯Êý£¬´ËÍ⣬ISAPIµÄDLLÓ¦ÓóÌÐòºÍWWW·þÎñÆ÷´¦ÓÚͬһ¸ö½ø³ÌÖУ¬Ð§ÂÊÒªÏÔÖø¸ßÓÚCGI¡£²»¹ýISAPIµÄƽ̨¼æÈÝÐԽϲĿǰֻÄÜÓÃÓÚ΢Èí×Ô¼ºµÄWindows95ºÍNT²Ù×÷ϵͳÉÏ£¬·þÎñÆ÷ƽ̨Ҳ½öÏÞÓÚ IIS£¨InternetInformationServer)ºÍMSpersonalwebserverÒÔ¼°NTworkstationÉ쵀 peerwebserver¡£
6£©ISAPI ɸѡÆ÷ÊÇʲô£¿
ISAPI ɸѡÆ÷ÊÇÔÚÆôÓà ISAPI µÄ HTTP ·þÎñÆ÷ÉÏÔËÐÐµÄ DLL£¬ÓÃÒÔɸѡÓë·þÎñÆ÷Ö®¼äÀ´»Ø´«Ë͵ÄÊý¾Ý¡£¸ÃɸѡÆ÷×¢²áʼþµÄ֪ͨ£¬ÀýÈçµÇ¼»ò URL Ó³Éä¡£µ±·¢ÉúÑ¡¶¨Ê¼þʱ£¬É¸Ñ¡Æ÷±»µ÷Ó㬲¢ÇÒÄú¿ÉÒÔ¼àÊÓ¼°¸ü¸ÄÊý¾Ý£¨ÔÚÊý¾Ý´Ó·þÎñÆ÷´«Êäµ½¿Í»§¶Ë»òÏà·´µÄ¹ý³ÌÖУ©¡£¿ÉÒÔʹÓà ISAPI ɸѡÆ÷ÌṩÔöÇ¿µÄ HTTP ÇëÇó¼Ç¼£¨ÀýÈ磬¸ú×ٵǼµ½·þÎñÆ÷µÄÓû§£©¡¢×Ô¶¨Òå¼ÓÃÜ¡¢×Ô¶¨ÒåѹËõ»òÆäËûÉí·ÝÑéÖ¤·½·¨¡£
7£©ISAPI ·þÎñÆ÷À©Õ¹ºÍɸѡÆ÷Ö®¼äµÄÇø±ðÊÇʲô£¿
·þÎñÆ÷À©Õ¹£ºÔÚ URL ÖÐÒýÓÃʱÔËÐС£±»ÏÔʽµ÷Óã¬ÀýÈçÓà http://myserver/myprog.dll?¡£±»Óû§µÚÒ»´Îµ÷ÓÃʱ¸ù¾ÝÇëÇó¼ÓÔØ¡£
ɸѡÆ÷£ºÎª·þÎñÆ÷´¦ÀíµÄÿ¸ö URL µ÷Óá£Èç¹û·¢ÉúÒÑ×¢²áʼþ£¬×Ô¶¯ÎªÈκη¢Ë͵½·þÎñÆ÷µÄ URL ÔËÐС£·þÎñÒòÆä×¢²á±íÏî¶øÆô¶¯Ê±¼ÓÔØ¡£
·þÎñÆ÷À©Õ¹ºÍɸѡÆ÷¶¼£º* ¹²Ïí·þÎñµÄ´¦Àí¿Õ¼ä¡£* ±ØÐëÊÇḬ̈߳²È«µÄ¡£* Ò»¾¼ÓÔØ±ã±£ÁôÔÚÄÚ´æÖУ¨Ö±µ½·þÎñÍ£Ö¹»òÕßÄÚ´æ±»ÆäËû½ø³ÌËùÐèÒª£©¡£
Èý ISAPIÓëCGIÓÐÄÄЩÏàͬºÍ²»Í¬Ö®´¦£¿
ISAPI ·þÎñÆ÷À©Õ¹ÎªÊ¹Óà Internet ·þÎñÆ÷µÄͨÓÃÍø¹Ø½Ó¿Ú (CGI) Ó¦ÓóÌÐòÌṩÁËÁíÒ»ÖÖÑ¡Ôñ¡£Óë CGI Ó¦ÓóÌÐò²»Í¬£¬ISAPI ÔÚ HTTP ·þÎñÆ÷ËùÔÚµÄͬһµØÖ·¿Õ¼äÔËÐУ¬²¢ÇÒ¿ÉÒÔ·ÃÎÊ¿ÉÓÉ HTTP ·þÎñÆ÷ʹÓõÄËùÓÐ×ÊÔ´¡£ISA µÄϵͳ¿ªÏú±È CGI Ó¦ÓóÌÐòµÍ£¬ÒòΪËüÃDz»ÒªÇó´´½¨ÆäËû½ø³Ì£¬Ò²²»Ö´ÐÐÐèÒªÔ½¹ý½ø³Ì±ß½çµÄͨÐÅ£¬¶øÕâÖÖͨÐŷdz£ºÄʱ¡£Èç¹ûÄÚ´æ±»ÆäËû½ø³ÌËùÐèÒª£¬À©Õ¹ºÍɸѡÆ÷ DLL ¶¼¿ÉÄܱ»Ð¶ÔØ¡£
Internet¿Í»§¶Ëͨ¹ýHTTP·þÎñÆ÷µ÷ÓÃISAPIµÄ·½·¨Óëµ÷ÓÃCGIÓ¦ÓóÌÐòµÄ·½·¨Ò»Ñù¡£ÀýÈ磬¿Í»§¶Ë¿ÉÒÔÕâÑùµ÷ÓÃÒ»¸ö CGI Ó¦ÓóÌÐò£ºhttp://sample¡¢example.exe?Param1&Param2£¬Ëü¿ÉÒÔÕâÑùµ÷ÓÃÒ»¸öÖ´ÐÐÏàͬ¹¦ÄÜµÄ ISAPI£ºhttp://sample/example.dll?Param1&Param2¡£ISAPI ÔÊÐíÔÚÒ»¸öDLLÖÐÓжà¸öÃüÁÕâЩÃüÁî×÷ΪDLLÖÐCHttpServer ¶ÔÏóµÄ³ÉÔ±º¯ÊýÀ´ÊµÏÖ¡£CGIÒªÇóÿ¸öÈÎÎñÓÐÒ»¸öµ¥¶ÀµÄÃû³ÆºÍÒ»¸öµ½µ¥¶ÀµÄ¿ÉÖ´ÐÐÎļþµÄURLÓ³É䡣ÿ¸öеÄCGIÇëÇóÆô¶¯Ò»¸öнø³Ì£¬¶øÃ¿¸ö²»Í¬µÄÇëÇó°üº¬ÔÚ¸÷×ԵĿÉÖ´ÐÐÎļþÖУ¬ÕâЩÎļþ¸ù¾Ýÿ¸öÇëÇó¼ÓÔØºÍÐ¶ÔØ£¬Òò´Ëϵͳ¿ªÏú¸ßÓÚISA¡£
ISAPI ɸѡÆ÷ûÓеÈЧµÄ CGI ɸѡÆ÷¡£É¸Ñ¡Æ÷ÌṩԤ´¦ÀíºÍºó´¦ÀíÔÚ¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼ä·¢Ë͵ÄËùÓÐÊý¾ÝµÄÄÜÁ¦¡£
FastCGI
¡¡¡¡1. FastCGI ÏñÊÇÒ»¸ö³£×¤ (long-live) Ð굀 CGI£¬Ëü¿ÉÒÔÒ»Ö±Ö´ÐÐ×Å£¬Ö»Òª¼¤»îºó£¬²»»áÿ´Î¶¼Òª»¨·Ñʱ¼äÈ¥ fork Ò»´Î (ÕâÊÇ CGI ×îΪÈËÚ¸²¡µÄ fork-and-execute ģʽ)¡£
¡¡¡¡2. FastCGI ¿ÉÔÚÈÎºÎÆ½Ì¨ÉÏʹÓã¬Netscape Enterprise ¼° IIS ¶¼ÓÐ FastCGI µÄÄ£¿é¿É¹©Ê¹Ó㬰¢ÅÁÆõ (Apache£¬ÒÔ¼°ÀûÓà Apache ÑÜÉú³ö×öµÄ·þÎñÆ÷) ÉÏÒ²ÓÐ mod_fastcgi ¿ÉÓá£
¡¡¡¡3. FastCGI Ö§³Ö C/C++£¬Ruby, Perl£¬Tcl£¬Java£¬Python µÈ³ÌÐòÓïÑÔ¡£
¡¡¡¡4. FastCGI µÄÓ¦ÓóÌÐòÒà¼æÈÝÓÚ CGI¡£¼´ FastCGI µÄÓ¦ÓóÌÐòÒ²¿ÉÒÔµ±³É CGI À´Ö´ÐС£
¡¡¡¡5. ÏÖÓÐµÄ CGI ³ÌÐòÒª¸Äд³É FastCGI ·Ç³£¼òµ¥£¬×îÉÙ¿ÉÄÜÖ»ÐèÒª¶à¼ÓÈëÈýÐгÌÐò´úÂë¡£
¡¡¡¡6. FastCGI µÄÕì´í·½Ê½Óë CGI ´óͬСÒ죬ֻҪ´øÈë³ÌÐòËùÐèµÄ»·¾³±äÁ¿¼°²ÎÊý£¬¼´¿ÉÔÚÃüÁîÁÐģʽִÐлòÕì´í¡£
¡¡¡¡7. FastCGI Ó¦ÓóÌÐòµÄд×÷·½Ê½Óë CGI ÀàËÆ£¬³ýÁ˼¸ÏîÔÔòÒªÌØ±ð×¢ÒâÍ⣬FastCGI µÄд×÷·½Ê½¸ú CGI ¼¸ºõÒ»Ñù£¬Óëѧϰ Web Server API ±È½ÏÆðÀ´£¬ FastCGI ¼òµ¥¶àÁË¡£
¡¡¡¡8. FastCGI Ö§ÊÚ·Ö²¼Ê½ÔËËã (distributed computing)£¬¼´ FastCGI ³ÌÐò¿ÉÒÔÔÚÍøÕ¾·þÎñÆ÷ÒÔÍâµÄÖ÷»úÉÏÖ´Ðв¢ÇÒ½ÓÊÜÀ´×ÔÆäËüÍøÕ¾·þÎñÆ÷À´µÄÇëÇó¡£
PHPµÄFastCGIʹÄãµÄËùÓÐphpÓ¦ÓÃÈí¼þͨ¹ýmod_fastciÔËÐУ¬¶ø²»ÊÇmod_phpsusexec¡£FastCGIÓ¦ÓÃËٶȺܿì ÊÇÒòΪËûÃdz־ÃÎȶ¨¡£²»±Ø¶Ôÿһ¸öÇëÇ󶼯ô¶¯ºÍ³õʼ»¯¡£ÕâʹµÃÓ¦ÓóÌÐòµÄ¿ª·¢³ÉΪ¿ÉÄÜ£¬·ñÔòÔÚCGI·¶ÀýÊDz»ÇÐʵ¼ÊµÄ£¨ÀýÈçÒ»¸ö´óÐ͵Ľű¾£¬»òÕßÒ»¸öÐèÒª Á¬½Óµ¥¸ö»ò¶à¸öÊý¾Ý¿âµÄÓ¦Óã©¡£
ºÃ´¦
PHP½Å±¾ÔËÐÐËٶȸü¿ì(3µ½30±¶)¡£PHP½âÊͳÌÐò±»ÔØÈëÄÚ´æ¶ø²»ÓÃÿ´ÎÐèҪʱ´Ó´æ´¢Æ÷¶ÁÈ¡£¬¼«´óµÄÌáÉýÁËÒÀ¿¿½Å±¾ÔËÐеÄÕ¾µãµÄÐÔÄÜ¡£
ÐèҪʹÓøüÉÙµÄϵͳ×ÊÔ´¡£ÓÉÓÚ·þÎñÆ÷²»ÓÃÿ´ÎÐèҪʱ¶¼ÔØÈëPHP½âÊͳÌÐò£¬Äã¿ÉÒÔ½«Õ¾µãµÄ´«ÊäËÙ¶ÈÌáÉýºÜ¸ß¶ø²»±ØÔö¼Ócpu¸ºµ£¡£
²»ÐèÒª¶ÔÏÖÓеĴúÂë×÷Èκθı䡣ÏÖÓеÄÒ»Çж¼ÊÊÓÃÓÚPHPµÄFastCGI
DZÔÚÎÊÌâ
¶ÔËùÓеÄ×ÓĿ¼£¨/home/USERNAME/public_html/php.ini£©ÄãÖ»ÓÐÒ»¸ö¿ÉÓõÄphp.iniÎļþ¡£ ÕâÊÇÓÅ»¯ÍøÕ¾´úÂëËù±ØÐèµÄ¡£Èç¹ûÄãÐèÒª¶à¸öphp.iniÎļþÒÔÊÊÓ¦²»Í¬µÄ½Å±¾ÐèÒª£¬Äã¿ÉÒÔÔÚÈκÎ×ÓĿ¼½ûÓÃPHPµÄ¿ìËÙCGI£¬¶øÆäÓàµÄµØ·½Ôò¼ÌÐøÓРЧ¡£Èç¹ûÄãÐèÒªÕâÑù×öÇëÁªÏµsupport¡£
Äã¶ÔPHP»·¾³×öµÄÈκÎÉý¼¶£¨Èçphp.iniÎļþµÄ¸Ä±ä£©¶¼Óм¸·ÖÖÓµÄÑÓ³Ù¡£ÕâÊÇÒòΪΪÁ˸ü¿ìµÄËÙ¶È ÄãµÄphp.iniÎļþÒѾ±»ÔØÈëÄڴ棬¶ø²»ÊÇÿ´ÎÐèҪʱÔÙ´Ó´æ´¢Æ÷ÖØÐ¶ÁÈ¡¡£