1.为ä»ä¹ PHPer åºå½å¦ä¹ Golang
为ä»ä¹ PHPer åºå½å¦ä¹ Golang
éç PHP æçè¶æ¥è¶æ·±å ¥çäºè§£ï¼ä»¥åéå°è¶æ¥è¶å¤çä¸åä¸å¡æ¶ï¼ä½¿ç¨ PHP æ»ä¼è®©ææä¸ç§è«åçæ åæãå½ç¶ï¼å¹¶ä¸æ¯æä¸ä¸ªäººå¨ä½¿ç¨ PHP çæ¶åéå°äºé®é¢ãäºå®ä¸ï¼æ¯ä¸ªç¥å¾®æä¸äºç»éªï¼æ¥è§¦è¿ä¸äºéæ±ç人é½ä¼æåæ ·çå°æãåç§é å LAMPï¼æè LNMPï¼ï¼æ¶æçå端ææ¯ä¹å æ¤è¢«åææ被åç°ï¼è¿èæ´åå° PHP çå¼åçææ¯ä½ç³»ä¸ãä»ç®åç Memcachedä½ä¸ºæ°æ®ä¸è½¬ï¼cron å端å®æ¶å¤çï¼å° GearmanãRabbitMQ è¿äºéåç¥å¨ï¼æè¿ Laruence çè³å°è£ äºå©ç¨ libcurl çå¼æ¥ç¹æ§å®ç°å¹¶å RPC è°ç¨ç yar æ©å±ãå ä¹æ´ä¸ªç¤¾åºé½å¨å¯»æ¾ PHP çæ©è¥¿ä¹è·¯ã好å§ï¼è¯´äºä¸å¤§å ï¼åå½ä¸»é¢ãä¹åæåäºä¸ç¯è±æç»ç¬ãWhy you PHP guys should learn Golangãï¼è·å¾ä¸å°å½é å人çå ³æ³¨ãæé¤æ¼ååè¯æ³è¢«ä»ä»¬è¯ç å¤ï¼ä¸»è¦æ¯æ许å¤æåè§å¾æ没æäºæ è¯´æ¸ æ¥ãæ以è¿éæç¨æ¯è¯éæ°èèè¿ä¸ªäºæ ï¼åªæ¯è¿äºå½é å人ä»ä¹æ¶åè½å¦ä¼é 读ä¸æå¢ï¼ï¼ï¼Go æè Golangï¼æ¯ç± Google æ¯æçå¿«éãä¸è´ã稳å®çï¼ææ´»è·ç社åºæ¯æçå¼æºç¼ç¨è¯è¨ãè¶æ¥è¶å¤çåºç¨éæ©ä½¿ç¨ Golang è¿è¡æ建ãè½ç¶ Rob Pike 说â⦠æ们å¸æ C++ ç¨åºåæ¥äºè§£ Go 并ä½ä¸ºä¸ä¸ªå¯éçè¯è¨ â¦âï¼ä¸è¿æçå¾è®¤ä¸ºï¼PHPer åºå½å¦ä¹ Golangï¼ æ¥ä¸æ¥æ们就æ¥è°è°åå ã容æå¦ä¹ PHP ç¸å½å®¹æå¦ä¹ ãGolang ä¹æ¯ï¼å¨è¿ç¹ä¸ï¼ä¸ç¾¤å¤§èå¤å¯¹æçè§ç¹è¿è¡äºçççæ¨å»ãä»ä»¬è®¤ä¸ºæç¾è¾±äº PHPerï¼è¯´å¾å¥½ååªæç®åçä¸è¥¿ PHPer æè½å¦ä¼ä¸æ ·ãä½æ¯ï¼è¿é¾éä¸æ¯äºå®åï¼æè æ¢ä¸ªè¯´æ³ï¼åæä¸æ ·çå欢 PHP ç人ï¼æå¤æå°é½ä¼æ´å欢ç®åçä¸è¥¿ãPHP çè¯æ³æ¥è¿ C æç¼ç¨è¯è¨ï¼C/C++/Javaççï¼ãå¦ææè¿äºè¯è¨çç»éªï¼å¨ç¬¬ä¸æ¬¡éå° PHP çæ¶åç«å»å°±è½å¼å§ä¸æç¼å代ç ãå¨æçæ¥ï¼ç¼å PHP 代ç æ许æ´å èéªç¨åºåçè®°å¿åï¼èä¸æ¯æºåï¼å½ä½ é¢å¯¹åç§ä¸åé£æ ¼çå½æ°å®ä¹ãåç§æ©å±çç¹æ®çº¦å®æ¶ï¼ä½ ä¸å®ä¼ç¸å½è®¤åæçè§ç¹ï¼ãGolang åæ ·æ¯ä¸ä¸ª C æç¼ç¨è¯è¨ãåï¼æè æä¸äºä¸åå§ãä¾å¦å ³é®å âforâï¼åè½ä¸å PHP çæ¥è¿ï¼ä½æ¯æ²¡ææ¬å·ãæ¡ä»¶è¯å¥ âifâ åæ ·æ éæ¬å·ãå¯ä»¥é 读 Effective Go äºè§£æ´å¤å 容ãGolang åªæ ä¸ªå ³é®åå 个æä½ç¬¦å·ãåé符å·æå ¶ä»ç¹æ®æ è®°ãè®°ä½è¿äºæ è®°ç¡®å®ä¸éè¦ä»ä¹ç¹å«çåªåã精巧çç±»åç³»ç»ç¸å½å®¹æ使ç¨ãå®ç¨çï¼å ·ææ¹æ³çç»æä½ç±»å代æ¿äºç¬¨éç对象系ç»ãæ¥å£çè®¾è®¡æ¯ Golang ä¸ææå欢çé¨åãå½å®æäºãGo æåãçå¦ä¹ ä¹åï¼å©ç¨ PHP 积累çç»éªï¼ç«å»å°±å¯ä»¥å¼å§ä½¿ç¨ Golang å¤çä¸äºç®åçä»»å¡ã容æ使ç¨PHP èæ¬æ¯ç± SAPI ç»ä»¶è¿è¡è§£ææ§è¡çï¼å¦ Web æå¡å¨æ¨¡åãPHP-FPM æè CLIãé¨ç½² PHP æéè¦çå ¨é¨ä¸è¥¿å°±æ¯ä¸ä¸ª SAPI ç¯å¢ãé ç½®è¿ä¸ªç¯å¢å¯¹äºæ°ææ¥è¯´å¯è½æ¯å¦ä¹ PHP è¿ç¨ä¸æ为å°é¾çé¨åãææç Golang 代ç ä¼ç¼è¯åé¾æ¥ä¸ºæ¬å°ç ãæ以é¤äºç¼è¯ç¯å¢ï¼æ§è¡æ¶æ éåä¸ºå ¶è¿è¡ä»»ä½ç¹å«çé¨ç½²ãå¯¹æ¯ PHP ç¯å¢çé ç½®ï¼è¿è¦ç®åå¾å¤ãä½ çå¾è®¤ä¸ºé ç½® PHP ç¯å¢å¾å¤æåï¼æä¸è§å¾ï¼ççï¼èé ç½® Golang ç¼è¯ç¯å¢æ¯é£è¿è¦ç®åç¹ãæ确信已ç»æ大éç Golang ç¸å ³ç书ç±ãæç« ä»ç»è¿å¦ä½è¿è¡ç¼è¯ç¯å¢çé ç½®äºã为äºæ´å æ¸ æ°ï¼æè¿é梳çä¸ä¸æè·¯ã
æä¸ä¸ªæ¥éª¤éè¦å¤çï¼ä¸è½½Golang çæºä»£ç ï¼æ ¹æ®ã[ç¿»è¯]Go ç¯å¢è®¾ç½®ãçæ示设置ç¯å¢åéï¼è¿è¡æºä»£ç src ç®å½ä¸ç all.bashãæè ä¸æ¥å°ä½ï¼ä½¿ç¨äºè¿å¶å è¿è¡å®è£ ãç¶åå°±ä¼å¾å°ä¸ä¸ªå«åâgoâçå·¥å ·éåã使ç¨âgoâå·¥å ·åä½¿ç¨ PHP ç CLI å·¥å ·ä¸æ ·ç®åãã[ç¿»è¯]go å·¥å ·ã对æ¤è¿è¡äºè¯¦ç»ç解éãPHP çè¿·æå¦æä¸ä¸ªç¼ç¨è¯è¨å®¹æå¦ä¹ å使ç¨ï¼æ们æ¯ä¸æ¯å°±åºå½å¦ä¹ å®å¢ï¼æ许å¤å®¹æå¦ä¹ å使ç¨çç¼ç¨è¯è¨ãé¾éè¦æå®ä»¬é½å¦ä¸éï¼çæ¡æ¯æ¾ç¶çï¼NO!ä½æ¯ å¢ï¼åªæ¯å 为å®å¾é ·ï¼æ¯çï¼æå¨å¼ç©ç¬ï¼ä½æ¯è¿æ¯ççãæ 论å¦ä½å ä» PHP èªèº«è°èµ·å§ãPHP âåæ¬æ¯ä¸ºäºå¼åå¨æç Web 页é¢è设计çæå¡å¨ç«¯éç¨è¯è¨(Wikipedia)âãPHP ä¸ä¸ªéè¦çç¹æ§å°±æ¯å¯ä»¥åµå ¥å° HMTL ä¸ã代ç ç¼åå¨â<?码分future任务源码php ⦠?>âæ ç¾å ï¼HTML åå¨æ ç¾å¤ãå®æä¸ä¸ªå¼ºå¤§çæ©å±ç³»ç»ãæ©å±ä½¿ç¨ C è°ç¨ Zend API ç¼åãæ°æ®çå¤çå®é ä¸è¦å©ç¨è¿äºæ©å±å®æãå¨æçæ¥ï¼PHP æ¯ä¸çä¸æ好ç模æ¿è¯è¨ãä½æ¯å½ç§¯ç´¯äºä¸äº PHP çç»éªï¼å¹¶ä¸å¼å§é¢å¯¹ä¸äºæ´å å¤æç Web åºç¨æ¶ï¼ä½ ä¸å®ä¼å¯¹ PHP 产çä¸ç§æ åçæè§ãå®æ²¡æå 建ç并è¡æºå¶ï¼æ²¡æ线ç¨ãè¿ç¨ï¼ä½ çå¾è®¤ä¸ºé£ä¸ªç®éçè¿ç¨æ§å¶å¯ä»¥ä¸å æ¹é çç¨å¨é«å¹¶åçç产ç¯å¢ï¼ï¼ï¼æè å ¶ä»æâç¨âãä¸ä¸ªæ ¢æ°æ®æºå¯ä»¥é»å¡æ´ä¸ªé¡µé¢çå¤çãæ¶æ¯éåãç¼åã代çâ¦â¦ç³»ç»å¼å§ä¸ä» ä» æ¯ PHP è¿ä¹å纯ï¼è¿å æ¬äºè®¸å¤æå¡åç³»ç»ç»ä»¶ãè¿æ¶ï¼PHP åªå¤çå¾å°çä¸å¡é»è¾ï¼æ为çæ£ç模æ¿è¯è¨äºãPHPer 们æ»æ¯å¨å¯»æ¾è§£å³è¿ä¸é®é¢çåæ³ï¼å¦âPHP multithreadâæè PHP RPC 并åæ¡æ¶ãæå¾é¾è¯´åªç§ä¼æ´å¥½ä¸äºãä¸è¿æè¯å®ä½ ä¼éè¦éæ©ä¸äºç¼ç¨è¯è¨ç¨äºå端工ä½çå¼åãå°±æèªå·±çç»éªï¼æå°è¯è¿ Cï¼ä¸ç´å¨å malloc/free è¿è¡ææï¼/Javaï¼é·å ¥å°äº jar å°ç±ä¸ï¼/Pythonï¼ä»æ¥æ²¡è½åå° Pythonic ä¸è¯´ï¼è¿æ»æ¯å¨é误çç±»åä¸æ转ï¼â¦â¦å¦ææ³è¦è·å¾æ§è½ï¼å°±å¾åå å管çè¿è¡ææï¼å¦æç¨ GCï¼å°±å¾é¨ç½²åè°ä¼ VMï¼å½è·å¾ä¾¿å©æ§çæ¶åï¼åæ¶ä¹æ¯èµ°å¨åå°ä¸ï¼ä¸ä¸ªå°é误就å¼èµ·å·¨å¤§çç¾é¾â¦â¦æ¯ä¸ªé½æä¼å¿ï¼åæ ·æ¯ä¸ªé½æé®é¢ã好å§ï¼ç°å¨åå° Golangï¼Golang æ GCï¼æ éå ³å¿å å管çï¼æè å¯ä»¥ç¨è¾å°çç²¾åå»å ³æ³¨å®ï¼ã代ç 被ç¼è¯ä¸ºæ¬å°ç ï¼å æ¤âcpâåâmvâå°±æ¯é¨ç½² Golang ç¼åçåºç¨æéè¦çå ¨é¨å·¥å ·ãå¢ï¼æåæå·²ç»è¯´è¿äºï¼Golang æ¯ä¸ä¸ªå ·æéæç±»åç³»ç»çç¼è¯è¯è¨ãæä»¥ä½ æ²¡ææºä¼å¼ä¹±åéçç±»åãå½ç¶ï¼PHPer åºè¯¥å¦ä¹ Golang çä¸ä¸ªéè¦åå æ¯â转å°Go æ¯å 为ä»ä»¬å¹¶æªæ¾å¼å¤ªå¤ç表达è½åï¼ä½æ¯è·å¾äºæ§è½ï¼å¹¶ä¸ä¸å¹¶åå ±èï¼Rob Pikeï¼âããWhy Not Go?ï¼è±æï¼ã对æ¤è¿è¡äºæ·±å ¥çåæãæå¯ä»¥å享ä¸äºæçç»éªï¼æä¸ä¸ª Gearman çworker ç¨äºå¤çå端æ°æ®ãPHP éè¿å ¶ API è¿æ¥å° Gearman ç Job Server å worker å起请æ±ãæå worker æ¯ä½¿ç¨ python ç¼åçï¼è¿ææ´å åå§ççæ¬ï¼PHP çï¼ä½æ¯ä½ è½æ³åå®å·¥ä½èµ·æ¥â¦â¦åï¼ä¸è¯´äºâ¦â¦ï¼ãè¿ä¸ªçæ¬æ许å¤çé®é¢ï¼æ¯æ们èªå·±çé®é¢ï¼ä¸å ³ Python çäºï¼ï¼ä½æ¯è³å°å®è½å·¥ä½ãåæ¥ç¨ Golang éåäºè¿ä¸ª workerã为æ¤æå¼åäº Golang ç Gearman APIï¼å¹¶ä½¿ç¨ Zend API ç¼åäºä¸ä¸ªå¨ Golang ä¸æ§è¡ PHP èæ¬çå ãç¶åå°å®ä»¬æ¾å¨ä¸èµ·ï¼ä¸ä¸ªå¯ä»¥æ§è¡ PHP ç Gearman workerãå®å·²ç»å·¥ä½äºä¸æ®µæ¶é´äºï¼çèµ·æ¥è¿ä¸éï¼å¦ï¼åå° Yar çå¯åï¼è¿éè¿æä¸ä¸ª Golang ç¼åç RPC å并å¨ï¼ç¨æ¥å并 PHP èæ¬ä¸ç RPC è°ç¨ãç°å¨è¿æ¯ä¸ªç©å ·ï¼ä¸è¿æ许æ¥åè½ç¨å¾çãè¿å ¶å®æ¯å° Golang ç channel å½ä½æ¶æ¯éåæ¥ç¨ãæå¨ãGolangï¼æ趣ç channel åºç¨ãä¸å¯¹æ¤æä¸äºè¯´æãä¸ççç¾å¥½åã谢谢 Golangï¼æ 论å¦ä½ï¼å¤§å¤æ° PHPer å¨è¿è¡å端å¼åçæ¶åé½ä¼éè¦å¦ä¹ ä¸äºå ¶ä»è¯è¨ãå¦æä½ æ£å¨å¯»æ¾ï¼æè å·²ç»å°è¯äºä¸äºå ¶ä»è¯è¨ã为ä»ä¹ä¸æ¥è¯è¯ Golangï¼å®çå¾å¯ä»¥è®©ä½ ççæ´»æ´å è½»æ¾åå¿«ä¹ãè®©ä½ å¯ä»¥ææ´å¤çæ¶é´éªä¼´ä½ ç家人åæåï¼åä½ ç±åçä¸è¥¿ï¼å»ä½ æ³å»çå°æ¹ãè²ä¼¼æè¿æ¯æ²¡è¯´æ¸ æ¥åï¼å¥½å§ï¼æ²¡å ³ç³»ï¼å¨ä¸ä¸ªæçä¸å½è½¯ä»¶å¼åè 大ä¼ä¸åè·å¤§å®¶å°±è¿ä¸ªè¯é¢åä¸ä¸ªæ¢è®¨å§ã