Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

omoon
October 12, 2013

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

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

omoon

October 12, 2013
Tweet

More Decks by omoon

Other Decks in Technology

Transcript

  1.  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();
  2.  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();
  3.  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(); ͳΜ͔͢Έ·ͤΜ
  4. ▾  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 ֎෦ϥΠϒϥϦ
  5. ▾  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 Ϋϥε
  6. 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;        } }
  7. ▾  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 λεΫ
  8. 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();                        }                }        } }
  9. #  crontab  -­‐e *  *  *  *  *  cd  /var/www/omoon.org;

     /usr/bin/php  oil  refine  flickr:run