omoon.org の裏側 〜FuelPHP の task 活用例〜

4584c227ef4ea69e789e5f53e0476418?s=47 omoon
October 12, 2013

omoon.org の裏側 〜FuelPHP の task 活用例〜

2013/10/12 の FuelPHP&CodeIgniter ユーザの集い LT 資料です。

4584c227ef4ea69e789e5f53e0476418?s=128

omoon

October 12, 2013
Tweet

Transcript

  1. PNPPOPSHͷཪଆ 'VFM1)1ͷUBTL׆༻ྫ 'VFM1)1ˍ$PEF*HOJUFSϢʔβͷू͍ʢ'VFM1)1౦ژษڧձɺ$PEF*HOJUFSUBMLʣ 0DUPCFS  4PUBSP0.63" !PNPPO

  2. "CPVU.F

  3. "CPVU.F w4PUBSP0.63"

  4. "CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠

  5. "CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎

  6. "CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ͸೥΄Ͳʢ࠷ۙ͸'VFM1)1ʣ

  7. "CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ͸೥΄Ͳʢ࠷ۙ͸'VFM1)1ʣ wPNPPOPSH

  8. "CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ͸೥΄Ͳʢ࠷ۙ͸'VFM1)1ʣ wPNPPOPSH w!PNPPO

  9. "CPVU.F w4PUBSP0.63" wେࡕ͔Βདྷ·ͨ͠ w,BOTBJ1)16TFST(SPVQ4UB⒎ w1)1ྺ͸೥΄Ͳʢ࠷ۙ͸'VFM1)1ʣ wPNPPOPSH w!PNPPO

  10. ΊΜͲ͕͘͞Γ

  11. None
  12. None
  13. "CPVU.F

  14. "CPVU.F

  15. ϑϨʔϜϫʔΫΛ࢖ͬͨ αϯϓϧΞϓϦέʔγϣϯ

  16.  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3    4

     $app  =  new  Silex\Application();  5    6  $app-­‐>register(new  Silex\Provider\TwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  σʔλϕʔε઀ଓ৘ใͷಡࠐ 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  Silex\Provider\DoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  τοϓը໘ 18  $app-­‐>get('/',  function(Silex\Application  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  ౤ߘॲཧ 29  $app-­‐>post('/speak',  function(Silex\Application  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run();
  17.  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3    4

     $app  =  new  Silex\Application();  5    6  $app-­‐>register(new  Silex\Provider\TwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  σʔλϕʔε઀ଓ৘ใͷಡࠐ 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  Silex\Provider\DoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  τοϓը໘ 18  $app-­‐>get('/',  function(Silex\Application  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  ౤ߘॲཧ 29  $app-­‐>post('/speak',  function(Silex\Application  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run();
  18.  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3    4

     $app  =  new  Silex\Application();  5    6  $app-­‐>register(new  Silex\Provider\TwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  σʔλϕʔε઀ଓ৘ใͷಡࠐ 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  Silex\Provider\DoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  τοϓը໘ 18  $app-­‐>get('/',  function(Silex\Application  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  ౤ߘॲཧ 29  $app-­‐>post('/speak',  function(Silex\Application  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run(); ͳΜ͔͢Έ·ͤΜ
  19. 'VFM1)1ͱͷͳΕͦΊ

  20. None
  21. None
  22. None
  23. None
  24. None
  25. ͓޷͖Ͱ͢Ͷ

  26. ଞʹ

  27. None
  28. ࠷ۙ͸

  29. None
  30. None
  31. None
  32. None
  33. None
  34. +40/Ͱ΍ΓͱΓ

  35. None
  36. ͋Γ͕ͱ͏

  37. ͯ͞

  38. PNPPOPSH

  39. None
  40. PNPPOPSH

  41. PNPPOPSH w೥͝Ζελʔτ

  42. PNPPOPSH w೥͝Ζελʔτ wࣸਅͱҰߦίϝϯτ͚ͩ

  43. PNPPOPSH w೥͝Ζελʔτ wࣸਅͱҰߦίϝϯτ͚ͩ w࠷ॳ͸)5.- '51Ξοϓϩʔυ

  44. ΊΜͲ͕͘͞Γ

  45. None
  46. None
  47. None
  48. ؆қԽͷྺ࢙

  49. ؆қԽͷྺ࢙ w'MJDLS

  50. ؆қԽͷྺ࢙ w'MJDLS w1)1 .Z42-

  51. ؆қԽͷྺ࢙ w'MJDLS w1)1 .Z42- w'MJDLS &ZF'J

  52. ؆қԽͷྺ࢙ w'MJDLS w1)1 .Z42- w'MJDLS &ZF'J wಠࣗDSPOKPC

  53. None
  54. ΦϨΦϨͳͷͰ׬੒͠ͳ͍

  55. None
  56. 5BTLTBSFDMBTTFTUIBUDBOCFSVOUISPVHIUIFDPNNBOEMJOFPS TFUVQBTBDSPOKPC5IFZBSFHFOFSBMMZVTFEGPSCBDLHSPVOE QSPDFTTFT UJNFEUBTLTBOENBJOUFOBODFUBTLT5BTLTDBODBMMT NPEFMTBOEPUIFSDMBTTFTKVTUMJLFDPOUSPMMFST

  57. 5BTLT

  58. 5BTLT wίϚϯυϥΠϯ͔Βݺ΂Δ

  59. 5BTLT wίϚϯυϥΠϯ͔Βݺ΂Δ wDSPOKPCͱͯ͠࢖͑Δ

  60. 5BTLT wίϚϯυϥΠϯ͔Βݺ΂Δ wDSPOKPCͱͯ͠࢖͑Δ wόοΫάϥ΢ϯυॲཧͱ͔

  61. 5BTLT wίϚϯυϥΠϯ͔Βݺ΂Δ wDSPOKPCͱͯ͠࢖͑Δ wόοΫάϥ΢ϯυॲཧͱ͔ wఆظతͳॲཧͱ͔

  62. 5BTLT wίϚϯυϥΠϯ͔Βݺ΂Δ wDSPOKPCͱͯ͠࢖͑Δ wόοΫάϥ΢ϯυॲཧͱ͔ wఆظతͳॲཧͱ͔ wϝϯςφϯεʹ

  63. 5BTLT wίϚϯυϥΠϯ͔Βݺ΂Δ wDSPOKPCͱͯ͠࢖͑Δ wόοΫάϥ΢ϯυॲཧͱ͔ wఆظతͳॲཧͱ͔ wϝϯςφϯεʹ wϞσϧ΍ΫϥεΛίϯτϩʔϥ͔ΒݺͿ࣌Έ͍ͨʹݺ΂Δ

  64. ͍͚Δ͔΋

  65. ΍ͬͯΈͨ

  66. None
  67. ▾  fuel/    ▾  app/        ▸  cache/

           ▾  classes/            ▸  controller/            ▸  model/            ▸  twig/            ▸  view/                flickr.php        ▾  config/            ▸  development/            ▸  production/            ▸  test/                config.php                db.php                parser.php                rest.php                routes.php        ▸  lang/        ▸  less/        ▸  logs/        ▸  migrations/        ▸  modules/        ▾  tasks/                flickr.php                robots.php        ▸  tests/        ▸  tmp/        ▾  vendor/            ▸  Goutte/            ▾  phpFlickr/                    auth.php                    example.php                    getToken.php                    phpFlickr.php                    README.txt            ▸  Twig/                .gitkeep ֎෦ϥΠϒϥϦ
  68. ▾  fuel/    ▾  app/        ▸  cache/

           ▾  classes/            ▸  controller/            ▸  model/            ▸  twig/            ▸  view/                flickr.php        ▾  config/            ▸  development/            ▸  production/            ▸  test/                config.php                db.php                parser.php                rest.php                routes.php        ▸  lang/        ▸  less/        ▸  logs/        ▸  migrations/        ▸  modules/        ▾  tasks/                flickr.php                robots.php        ▸  tests/        ▸  tmp/        ▾  vendor/            ▸  Goutte/            ▾  phpFlickr/                    auth.php                    example.php                    getToken.php                    phpFlickr.php                    README.txt            ▸  Twig/                .gitkeep Ϋϥε
  69. require_once  APPPATH  .  'vendor'  .  DS  .  'phpFlickr'  .  DS

     .  'phpFlickr.php'; class  Flickr {        protected  static  $_instance  =  null;        private  function  __construct()        {                $this-­‐>api  =  new  phpFlickr(                        'xxxxxxxxxxxxxxxxxxxx'  //Config::get('app.flickr_api_key')                );        }        public  static  function  forge()        {                if  (empty(self::$_instance))  {                        static::$_instance  =  new  static();                }                return  static::$_instance-­‐>api;        } }
  70. ▾  fuel/    ▾  app/        ▸  cache/

           ▾  classes/            ▸  controller/            ▸  model/            ▸  twig/            ▸  view/                flickr.php        ▾  config/            ▸  development/            ▸  production/            ▸  test/                config.php                db.php                parser.php                rest.php                routes.php        ▸  lang/        ▸  less/        ▸  logs/        ▸  migrations/        ▸  modules/        ▾  tasks/                flickr.php                robots.php        ▸  tests/        ▸  tmp/        ▾  vendor/            ▸  Goutte/            ▾  phpFlickr/                    auth.php                    example.php                    getToken.php                    phpFlickr.php                    README.txt            ▸  Twig/                .gitkeep λεΫ
  71. namespace  Fuel\Tasks; class  Flickr {        public  static

     function  run($limit  =  4)        {                $response  =  \Flickr::forge()-­‐>photos_search(                        array(                                'user_id'  =>  '94387617@N00',                                'per_page'  =>  $limit,                                'tags'  =>  'asgt,cover',                                'tag_mode'  =>  'all',                                'sort'  =>  'date-­‐taken-­‐desc'                        )                );                foreach  ($response['photo']  as  $photo)  {                        $r  =  \Flickr::forge()-­‐>photos_getInfo($photo['id']);                        $e  =  \Flickr::forge()-­‐>photos_getExif($photo['id']);                        //print_r($e['camera']);                        if  (null  ===  \Model_Coverphoto::find_by('flickr_id',  $r['photo']['id']))  {                                $r['photo']['dates']['taken'];                                $coverphoto  =  \Model_Coverphoto::forge();                                $coverphoto-­‐>flickr_id  =  $r['photo']['id'];                                $coverphoto-­‐>title  =  $r['photo']['description'];                                $coverphoto-­‐>taken_at  =  $r['photo']['dates']['taken'];                                $coverphoto-­‐>camera  =  $e['camera'];                                $coverphoto-­‐>data  =  json_encode($r['photo']);                                $coverphoto-­‐>save();                        }                }        } }
  72. #  crontab  -­‐e *  *  *  *  *  cd  /var/www/omoon.org;

     /usr/bin/php  oil  refine  flickr:run
  73. None
  74. PNPPOPSH

  75. λά෇͚͚ͩͰߋ৽Մೳ

  76. J1IPOFͷqJDLSΞϓϦͰ΋

  77. ࠓޙͷల๬

  78. None
  79. None
  80. UBTLΛੵۃతʹ࢖͍·͠ΐ͏

  81. ͋Γ͕ͱ͏͍͟͝·ͨ͠