-ã€ã³ã¹ããŒã«ãšãµãŒããŒç®¡ç
-ãã¥ãŒç®¡ç-å¯èœãªããšãšæ¹æ³
-Gearmanãšé£æºããããã®PECLããã³PEARã®PHPæ¡åŒµ
-ãµãŒããŒç£èŠ
-ã³ãŒãäŸ
-ãããã§ã®ããŒã¿è»¢é
-PHPã§ã®äžŠåã³ã³ãã¥ãŒãã£ã³ã°ã®ç·šæ
é¢çœãïŒ ã«ããããé¡ãããŸã
è³æã®æ瀺ãé²ããåã«ãè³æã®åºæã説æããå¿ èŠããããŸãã ããã¯ãããã€ãã®ãããžã§ã¯ãïŒãã¹ãŠäœéã®ãªã¢ãŒããµã€ãã§ã®äœæ¥ã«é¢é£ããïŒã§ã®å®çšçãªã¢ããªã±ãŒã·ã§ã³ããã®ã³ã³ãã€ã«ã§ãããããã¥ã¡ã³ããšãã£ã¹ã«ãã·ã§ã³ããã®æç²ãããã€ãã®èŠ³å¯ãšæœè±¡çãªèå¯ã§ãã ãã¡ãããäžæ£ç¢ºãç©è°ãéžã決å®ãç©è°ãéžãèãããããããããŸãã-äœè ã¯ã©ããªæ¹å€ãèšæ£ã«ãæè¬ããã§ãããã
å 容
GearmanããŒã¿ã©ã€ããµã€ã¯ã«
Gearmanã®ã€ã³ã¹ããŒã«ãšå¶åŸ¡
ãµãŒããŒç¶æ ç£èŠ
ã®ã¢ãã³ãåèµ·åãããšãã®ãã¥ãŒã®éåœ
ãã¥ãŒå šäœããªã»ããããç¹å®ã®ã¿ã¹ã¯ã®ãã¥ãŒããªã»ããããŸã
ã¯ãŒã«ãŒã®åèµ·å
Gearmanãšé£æºããããã®PECLããã³REARã®PHPæ¡åŒµ
ãã·Net_Gearman
ãã¯ã«ã®ã¢ãã³
PECL Gearmanãã€ã³ã¹ããŒã«ãã
æãç°¡åãªã¯ã©ã€ã¢ã³ããšã¯ãŒã«ãŒïŒ+ãããªïŒ
ã¯ã©ã€ã¢ã³ããšã®éšåçãªããŒã¿è»¢éãšè¿œå ã®ããŒã¿äº€æïŒ+ãããªïŒ
ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãšåªå 床
Gearmanã䜿çšããPHPã§ã®äžŠåã³ã³ãã¥ãŒãã£ã³ã°ïŒ+ãããªïŒ
GearmanããŒã¿ã©ã€ããµã€ã¯ã«
詳现ã«å ¥ãåã«ããµãŒããŒã§ã®äœæ¥ãå床説æããŸãã
æãåçŽãªäŸã PHPã§f-andãåŒã³åºããŠå®è¡ããæ¹æ³ïŒ
ã€ãŸããªãã åãããã«ãªããŸãããããã¥ãŒãµãŒããŒã䜿çšããŠããŸãã
èŠããã«ãé¢æ°ã®çµæ/ã¢ã¯ã·ã§ã³ãå¿ èŠãšããã¹ã¯ãªããïŒãã¯ã©ã€ã¢ã³ããïŒã¯ãé¢æ°ã®ååãšãã®åŒæ°ããµãŒããŒã«ç»é²ïŒç»é²ïŒããŸã-ã¿ã¹ã¯ïŒãã¿ã¹ã¯ãïŒããµãŒããŒäžã«äœæãããŸãã
ãã®ååã®é¢æ°ïŒãworkerãïŒã®ãµãŒããŒã«ãã³ãã©ãŒãç»é²ãããŠãããçŸåšãã³ãã©ãŒã空ããŠããå ŽåãåŠççšã®ããŒã¿ãšé¢æ°ã®ååãã¿ã¹ã¯ïŒãjobãïŒã®åœ¢åŒã§éä¿¡ãããŸãã
ãã®ãããªé¢æ°ã®ã¯ãŒã«ãŒãç»é²ãããŠããªãããããžãŒã§ããå Žåãã¿ã¹ã¯ã¯ãã¥ãŒã«å ¥ããããåŠçãåŸ æ©ããŸãã
åŠçåŸãã¯ãŒã«ãŒã¯è¿ããã®ãGearmanã«æž¡ããŸãã ãã¥ãŒãµãŒããŒã¯ãã©ã®ã¯ã©ã€ã¢ã³ããåãååãšãã®ãããªããŒã¿ã§ã¿ã¹ã¯ãç»é²ãããã調ã¹ãã¯ãŒã«ãŒã®çµæãããã«éä¿¡ããŸãïŒã¯ã©ã€ã¢ã³ããã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ããšããŠç»é²ããªãã£ãå Žåã§ããã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ããšããŠç»é²ãããŠããå Žåãã¯ã©ã€ã¢ã³ãã«ã¯äœãéä¿¡ãããŸããïŒ ã
ãã®åäœåçããããã«äœãç¶ããŸããïŒ
1. Gearmanã®æäœã«ã¯ãã¯ã©ã€ã¢ã³ããã¿ã¹ã¯ãã¯ãŒã«ãŒããžã§ãã® 4ã€ã®ãªããžã§ã¯ããé¢ä¿ããŠããŸã ã ãã¹ãŠã®ãªããžã§ã¯ãã®èª¬æã¯ãªãã£ã¹ã«ãããŸãã PHPãµã€ã ã
2.éä¿¡ãããããŒã¿-ã¯ã©ã€ã¢ã³ããããµãŒããŒãžãããã³ã¯ãŒã«ãŒããè¿ãããäž¡æ¹-ããã¯1è¡ã®ã¿ã§ã1è¡ã®ã¿ã§ãã è€æ°ã®åŒæ°ãæž¡ãå¿ èŠãããå ŽåããŸãã¯æååã§ã¯ãªã-ããšãã°é å-ã·ãªã¢ã«åãå¿ èŠã§ãã
ãã ããäžèšã®ãã¹ãŠã¯çãç¹°ãè¿ãã§ãã ææžããã³æ¢ã«å ¬éãããŠããè³æã ãã¥ã¢ã³ã¹ã
Gearmanã®ã€ã³ã¹ããŒã«ãšå¶åŸ¡
倧ããªããŒãºãããå Žåã¯ãWindowsã§GearmanãµãŒããŒãèµ·åã§ããŸããJavaã§ã®å®è£ ããããŸãã
https://launchpad.net/gearman-java
ããããLinuxã§ã®äœæ¥ãæ€èšããŸãïŒæ¬¡ã®äŸã¯Debiançšã§ãïŒã
ãµãŒããŒã®ã€ã³ã¹ããŒã«ã¯ã¹ã ãŒãºã«å®è¡ãããæ©èœã¯ãããŸããã
aptitude install gearman-job-server
ã€ã³ã¹ããŒã«ãæ£åžžã«å®äºãããšããµãŒããŒã¯etc / init.d / gearman-job-serverããã·ã³ãã«ã§æ確ãªã³ãã³ãã§å¶åŸ¡ãããŸãã
{éå§| åæ¢| åèµ·å| 匷å¶ãªããŒã}
ãµãŒããŒã®ããã©ã«ãã®ãã¹ãã¯localhostãããŒãã¯4730ã§ã
ãµãŒããŒç¶æ ç£èŠ
ãµãŒããŒã§äœãèµ·ãã£ãŠããã®ããåžžã«ç¢ºèªããå¿ èŠããããŸããç»é²ãããŠããã¿ã¹ã¯ããã¥ãŒã«ããã¿ã¹ã¯ã®æ°ãåã¿ã¹ã¯ã«ç»é²ãããŠããã¯ãŒã«ãŒã®æ°ã
ããã¯ã次ã®ã³ãã³ãã䜿çšããŠã³ã³ãœãŒã«ããå®è¡ã§ããŸãã
ïŒãšã³ãŒã¹ããŒã¿ã¹ïŒ| netcat 127.0.0.1 4730
ã®ã¢ãã³ãåèµ·åãããšãã®ãã¥ãŒã®éåœ
ããã«åé¡ãçºçããŸãïŒ
ããã©ã«ãã®ã€ã³ã¹ããŒã«ã§ã¯ããã¥ãŒã¯ã¡ã¢ãªã«ä¿åãããŸãããµãŒããŒãåèµ·åãããšãã¯ã©ã€ã¢ã³ãããµãŒããŒã«éä¿¡ãããã¹ãŠã®ã¿ã¹ã¯ããã£ã³ã»ã«ããããµãŒããŒäžã®ãã¹ãŠã®ã¯ãŒã«ãŒã®ç»é²ããã£ã³ã»ã«ãããŸãã åæã«ãã¯ãŒã«ãŒã«å¯ŸããŠããµãŒããŒãšã®æ¥ç¶ã倱ãããŸããããªã©ã®äŸå€ãçæãããŸãã
ãã¥ãŒã¯ããŒã¿ããŒã¹ã«ä¿åã§ããMySQLãPostgreSQLãSQLiteããµããŒããããŠããŸãã ãã®ãããªãã¥ãŒãæŽçããæ¹æ³ã¯ããªãã£ã¹ã§ããæžãããŠããŸãã ãŠã§ããµã€ãïŒ
http://gearman.org/index.php?id=manual:job_server#persistent_queues
ãã¥ãŒãä¿åããŠãããµãŒããŒã®åèµ·åæã«ã¿ã¹ã¯ãã³ãã©ãŒïŒã¯ãŒã«ãŒïŒããµãŒããŒãã "è±èœ"ãããããã¯ãŒã«ãŒãåèµ·åããããã¯ãŒã«ãŒèªäœã§ãã®ãããªç¶æ³ãäºæž¬ããå¿ èŠãããããšã«æ³šæããŠãã ããã
ãã¥ãŒå šäœããªã»ããããç¹å®ã®ã¿ã¹ã¯ã®ãã¥ãŒããªã»ããããŸã
ãã¥ãŒãããŒã¿ããŒã¹ã«ä¿åãããŠããªãå Žåãäžèšã®ããã«ãµãŒããŒãåèµ·åãããšããã¥ãŒå šäœããªã»ãããããŸãã ãã¥ãŒãããŒã¿ããŒã¹ã«ä¿åãããŠããå ŽåããµãŒããŒã®åèµ·åã«å ããŠã察å¿ããããŒãã«ããã¹ãŠãŸãã¯éžæçã«ã¯ãªã¢ããå¿ èŠããããŸãã ãµãŒããŒãåèµ·åãããšãã¯ã©ã€ã¢ã³ããšã¯ãŒã«ãŒã®äž¡æ¹ã§äŸå€ãã¹ããŒãããããšãæãåºããŠãã ããã
ãã ãã1ã€ã®ã¿ã¹ã¯ã®ã¿ã®ãã¥ãŒããªã»ããããå¿ èŠãããå Žåã«ç¶æ³ãçºçããå¯èœæ§ããããŸãã äŸïŒ100ã®ãµã€ãã解æãã1ã€ãå¿çãåæ¢ãããã®ãµã€ãããããŒã¿ãåä¿¡ããããã«ãã¥ãŒã«1,000ã®ã¿ã¹ã¯ããããä»ã®ãã¹ãŠã®ãµã€ãããã®ããŒã¿ã¯åé¡ãªããã¥ãŒãµãŒããŒãä»ããŠåãå ¥ããããŸãã åæ¢ãããµã€ãã§ã®ã¿ãã¥ãŒãåé€ããå¿ èŠããããŸãã
ãããè¡ãæãç°¡åã§æãç°¡åãªæ¹æ³ã¯ããã¥ãŒãµãŒããŒã«åãååã®ã¿ã¹ã¯ãç»é²ããåœã®ã¯ãŒã«ãŒãéå§ããããšã§ãããã ããNULLã空ã®æååããŸãã¯å¥œããªãã®ããã°ããè¿ããŸããäž»ãªããšã¯é«éã§ãã ãã®ã¯ãŒã«ãŒã¯ãã¹ãŠã®ä¿çäžã®ã¿ã¹ã¯ãèš±å¯ãããã¥ãŒã¯ã¯ãªã¢ãããŸãã
ã¯ãŒã«ãŒã®åèµ·å
ãªããããå¿ èŠãªã®ã§ããããïŒ ããŠãåŽåè ãåçµããŠããçãã®ãªãæãããªç¶æ³ã«å ããŠããã1ã€ãéåžžã«é »ç¹ã«ãããŸãã
ç¶æ³ïŒã¯ãŒã«ãŒãå®è¡ãããŠããããµãŒããŒã«ã¿ã¹ã¯ãç»é²ããŸããã ãã®æç¹ã§ã¯ãŒã«ãŒã³ãŒããå€æŽãããšãã©ãã ãä¿åããŠããã¿ã¹ã¯ãç»é²ãããæç¹ã§ãã¥ãŒãµãŒããŒããã®ã³ãŒããåŠçãããŸãã
ã³ãŒãã®å€æŽãæå¹ã«ããã«ã¯ãã€ãŸãããµãŒããŒã®ã¿ã¹ã¯ãæ¢ã«å€æŽãããã³ãŒãã§åŠçããã«ã¯ãã¯ãŒã«ãŒãåèµ·åããå¿ èŠããããŸããã€ãŸããçŸåšã®ã¯ãŒã«ãŒã®ã¹ã¯ãªãããåæ¢ããŠåå®è¡ããå¿ èŠããããŸãã ã¡ãœããã¯ç°¡åã§ããbashã¹ã¯ãªããã䜿çšããŠãæåã§exit_workerãªã©ã®ã¯ãŒã«ãŒã§é¢æ°ãåŠçããã¯ã©ãŠã³ãªã©ããé¢æ°ãèµ·åããŸãã
Gearmanãšé£æºããããã®PECLããã³REARã®PHPæ¡åŒµ
PHPã§Gearmanãã¥ãŒãµãŒããŒãæäœããã«ã¯ã pecl gearmanãšpear Net_Gearmanã® 2ã€ã®æ¡åŒµãªãã·ã§ã³ã䜿çšã§ããŸãã
ãããã®æ¡åŒµæ©èœã«ã¯æ ¹æ¬çãªéãããããŸãã
ãã·Net_Gearman
pear Net_Gearmanã¯ãããã€ãã®phpãã¡ã€ã«ã§ãã ãããŠããã ãã§ãã ãµãŒããŒãžã®ã€ã³ã¹ããŒã«ã¯éåžžã«ç°¡åã§ãã
pear install Net_Gearmanãã£ãã«ïŒ//pear.php.net/Net_Gearman-0.2.3
ãµãŒããŒã«ã€ã³ã¹ããŒã«ããããšãã§ããŸãããã¢ãŒã«ã€ãã解åããæ¥ç¶accãå®è£ ããã ãã§ãã ã¯ã©ã¹ãšããã ãã§ã-äŸãã°ãããã䜿çšããããšãã§ããŸã
function __autoload($className){ // pear Net_Gearman, Net_Gearman_Job if(strstr($className, 'Net_Gearman_') and !strstr($className, 'Net_Gearman_Job_')){ $className = str_replace('Net_Gearman_', '', $className); include_once PATH_TO_PEAR_NET_GEARMAN.$className.'.php'; } // pear Net_Gearman_Job if(strstr($className, 'Net_Gearman_Job_')){ $className = str_replace('Net_Gearman_Job_', '', $className); include_once PATH_TO_PEAR_NET_GEARMAN.'Job/'.$className.'.php'; } }
ã¡ãªã¿ã«ãããã«ãããåãDenwerãŸãã¯OpenServerã䜿çšããŠãPHPã§Gearmanãæäœã§ããŸãã
çŸåšã®ããŒãžã§ã³ã¯2009幎ã®ã¢ã«ãã¡ãªãªãŒã¹ã§ãã ããããããã¯æãããããšã§ã¯ãããŸãããå¿ èŠãªãã¡ã€ã«ãç·šéããæéã¯ãªããè¿œå ã®ã³ã³ããŒãã³ã/ã©ã€ãã©ãªã¯äœ¿çšãããŸããã
æ¥ä»ã«ãããããããã©ã€ãã©ãªã¯php5.3ã§æ©èœããŸã*ä¿®æ£ã¯äžèŠã§ãã
åé¡ã¯ããã®ãã¹ãŠã®å¹žçŠãGearmanãµãŒããŒãšã©ã®ããã«çžäºäœçšããããšããããšã§ãã ãœã±ãããä»ããŠããµãŒããŒã«ã³ãã³ããéä¿¡ããŸãïŒ å ¬åŒãµã€ãã®ãµãŒããŒãšã®ããåãã®èª¬æã¯ãã¡ãã§ãïŒ
pear Net_Gearmanã®éèŠãªè©³çŽ°ã«æ³šæããŠãã ãããã©ã€ãã©ãªã«ã¯ãµãŒããŒãç£èŠããïŒéšåçã«ïŒãµãŒããŒã管çããæ段ããããŸããããã«ãããããšãã°äžèšã®ç£èŠçšã¹ã¯ãªãããäœæã§ããŸãã
PECLã®ã¢ãã³
ãã¹ãŠã®å©ç¹ã«ãããããããpear Net_Gearmanã©ã€ãã©ãªã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯è²§åŒ±ã§ãã©ããã«çœ®ããšããåä»ã§ãã ããã«ãIDE-ããšãã°phpStormã«ã¯Net_Gearmanã¯ã©ã¹ãå«ãŸããŠãããïŒ
pecl gearmanãšpear Net_gearmanã®äž»ãªéãã¯ãpecl gearmanã¯ãµãŒããŒãšçŽæ¥å¯Ÿè©±ããªãããšã§ããããã¯libgearman Cã©ã€ãã©ãªã®ã©ãããŒã§ãã
PECL Gearmanãã€ã³ã¹ããŒã«ãã
ç§ã¯ãããããã«å¥œãã«ãªãããã§ãïŒ
PECLã€ã³ã¹ããŒã«ã®ã¢ãã³
ããããããã¯ããŸããããŸããã ã€ã³ã¹ããŒã«ã®æåŸã«ãlibgearmanããŒãžã§ã³0.21以éãå¿ èŠã§ãããšããã¡ãã»ãŒãžã衚瀺ãããŸãããã®ãããªã©ã€ãã©ãªã®ã¢ã»ã³ããªã«ã¯ãããã«ã¢ã¯ã·ã§ã³ãããããã¹ãŠãæåããªãå¯èœæ§ããããŸãã
ã€ã³ã¿ãŒãããã§ã¯ãpecl-gearman-0.7.0ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããããã®å€ãã®æšå¥šäºé ããããŸããããã°ããããŸã-ã»ã°ã¡ã³ããŒã·ã§ã³ãã©ãŒã«ããšã©ãŒã§ã¯ã©ãã·ã¥ããå¯èœæ§ãé«ããªããŸãã
ããã€ãã®ãã¹ãã«ãããããŒãžã§ã³0.8.1ãã€ã³ã¹ããŒã«ããéã«åé¡ãªãå®å®ããŠåäœããããšãããããŸããã
ãµãŒããŒããéå§ããdebian6 / php5.3 *ããŒããããã®ã€ã³ã¹ããŒã«é åºã¯æ¬¡ã®ãšããã§ãïŒdebian7 / php5.4ã«ã€ããŠã¯ã ãã®åºçç©ãåç §ããŠãã ããïŒã
aptitude install gearman-job-server aptitude install php5-dev aptitude install php-pear aptitude install make aptitude install libgearman-dev cd /tmp pecl download gearman-0.8.1 tar -xvf gearman-0.8.1.tgz cd gearman-0.8.1 phpize ./configure make make test make install echo 'extension=gearman.so' > /etc/php5/conf.d/gearman.ini
ããã§ãã©ã€ãã©ãªã®ãã¹ãŠã®çŸãããå®éã®ãããžã§ã¯ãã§å®å šã«äœ¿çšã§ããŸãã IDEã«ã¯pecl gearmanã®ã¯ã©ã¹ãå«ãŸããŠããããããã以äžã®ã¢ã¯ã·ã§ã³ã¯äžèŠã§ãã 以äžã®ãã¹ãŠã®äŸã§ã¯ãpecl gearmanæ¡åŒµã䜿çšããŠããŸãã
äŸ
æãç°¡åãªã¯ã©ã€ã¢ã³ããšã¯ãŒã«ãŒ
ã客æ§
<?php $client = new GearmanClient(); /* - true , . echo(''), */ $client->addServer('192.168.68.4'); $client->setTimeout(29000); /*true/false */ $haveGoodServer = $client->echo(''); var_dump($haveGoodServer); $data = 'slon yooo'; /* Gearman */ $res = $client->do('function_revert_string_and_caps', $data); /* , , */ echo $res;
åŽåè
<?php $worker = new GearmanWorker(); $worker->addServer('192.168.68.4'); /* , - function_revert_string_and_caps, - 'revCaps*/ $worker->addFunction('function_revert_string_and_caps', 'revCaps'); /* . */ $worker->work(); /* - */ //while($worker->work()){}; // - , - - job function revCaps($job){ /* job , */ $content = $job->workload(); return mb_strtoupper(strrev($content)); }
ãµã³ãã«åç»
ã¯ã©ã€ã¢ã³ããšã®éšåçãªããŒã¿è»¢éããã³è¿œå ã®ããŒã¿äº€æ
ã¯ã©ã€ã¢ã³ãã§doæäœã䜿çšããããšã¯å¿ ããã䟿å©ã§ã¯ãããŸãããå€ãã®å ŽåãåçŽãªã³ãŒã«ããã¯fã䜿çšããŠãã¿ã¹ã¯ã®è¿œå ãšãµãŒããŒããã®ããŒã¿ã®åŠçã䜿çšããããšããå§ãããŸãã
ããã«ãããŒã¿ãããŒãåäœã§éä¿¡ãããå ŽåãåŠçãããããŒãã®æ°ã衚瀺ããããšã¯çã«ããªã£ãŠããŸãïŒããšãã°ãé²è¡ç¶æ³ããŒãªã©ïŒã
ã客æ§
<?php $client = new GearmanClient(); $client->addServer('192.168.68.4'); $data = ''; /* . */ $client->addTask('function_serial_send', $data); /*, - */ $client->setCreatedCallback('createTask'); /* - - */ function createTask(GearmanTask $task){ echo "Start data from ".$task->jobHandle()."\n"; } /*, - */ $client->setDataCallback('getData'); /* - */ function getData(GearmanTask $task){ echo "received:".$task->data()."\n\n"; } /*, - Complete - */ $client->setCompleteCallback('stopTask'); /*- - */ function stopTask(){ echo "task Stop\n"; exit; } /*, - */ $client->setStatusCallback('getStatus'); /* %*/ function getStatus(GearmanTask $task){ echo "Handled: ".$task->taskNumerator() / $task->taskDenominator()*(100)."%\n"; } /* - . : - callback - */ $client->runTasks();
åŽåè
<?php $worker = new GearmanWorker(); $worker->addServer('192.168.68.4'); $worker->addFunction('function_serial_send', 'sendDataAndStatus'); /* - , worker */ while($worker->work()){} function sendDataAndStatus(GearmanJob $job){ $arr = array('one','two', 'three', 'four', 'five'); $i = 1; foreach ($arr as $diggo){ /* - 1,5 2,5 .. - Numerator, ââ, Denumenator - ââ. , long*/ $job->sendStatus($i, count($arr)); /* */ $job->sendData($diggo); echo "send data: ".$diggo, "\n"; $i++; sleep(1); } /* - */ $job->sendComplete(''); }
ãã®äŸã®å®è¡ã®ãããªïŒ
ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãšåªå 床
ã¿ã¹ã¯ã®ã¹ããŒã¿ã¹ã¯éåžžãŸãã¯ããã¯ã°ã©ãŠã³ãïŒåæ/éåæïŒã§ããããã®å®è¡ã®åªå 床ã¯ã¯ã©ã€ã¢ã³ãã§èšå®ãããŸãã ã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ããšããŠãµãŒããŒã«è¿œå ãããå Žåãã¯ã©ã€ã¢ã³ãã¯å®éã«ãµãŒããŒã«åçŽã«ãã¹ããŒããããã以äžã®éåœã«ã¯é¢å¿ããããŸããã ã¿ã¹ã¯ãæ£åžžãªå Žåãã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒããã®å®äºçµæãæåŸ ããŸãã
ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã®å Žåããã¬ãã£ãã¯ã¹ã®ããã¯ã°ã©ãŠã³ãã䜿çšãããŸãã
åªå é äœã«ã¯3ã€ã®ã¬ãã«ããããŸã-éåžžïŒãã¬ãã£ãã¯ã¹ãªãïŒãäœ/é«æ¯çã äœ/é«ãããšãã°addTaskHighBackgroundã¡ãœãã-ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãé«ãåªå 床ã§è¿œå ããŸãã
ããã¯ãã¹ãŠãªãã£ã¹ã§ããæãããŠããŸãã GearmanClientã®ããã¥ã¡ã³ã
Gearmanã䜿çšããPHPã§ã®äžŠåã³ã³ãã¥ãŒãã£ã³ã°
åèã«ã¯ãã¡ãããäžçªçŸå³ããã§ãã
ãã®äŸã®ã³ãŒãã¯ããããªã¥ãŒã ããããããæäŸãããŠããŸããããè»äºçãªãã®ã¯äœããããŸãããã¯ã©ã€ã¢ã³ãã¯800以äžã®ã¿ã¹ã¯ããã¥ãŒãµãŒããŒã«è¿œå ãã4ã€ã®ã¯ãŒã«ãŒãã¿ã¹ã¯ãåŠçããŸãã
ã¿ã¹ã¯èªäœã¯ãYandex Translate APIã䜿çšããŠããã¹ãã®äžéšã翻蚳ããŠããŸããã¿ã¹ã¯å šäœã¯ããŽãããã¡ãŒã¶ãŒã®æ¬ããã·ã¢èªãããŠã¯ã©ã€ãèªã«ç¿»èš³ããŠããŸãã
ãããªã¯æ¬¡ã®ãšããã§ãã