狠狠撸

狠狠撸Share a Scribd company logo
omoon.org の裏側
FuelPHP の task 活用例
FuelPHP&CodeIgniter ユーザの集い(FuelPHP東京勉強会#5、CodeIgniter talk #2)
October 12, 2013
Sotaro OMURA
@omoon
About Me
About Me
?Sotaro OMURA
About Me
?Sotaro OMURA
?大阪から来ました
About Me
?Sotaro OMURA
?大阪から来ました
?Kansai PHP Users Group Sta?
About Me
?Sotaro OMURA
?大阪から来ました
?Kansai PHP Users Group Sta?
?PHP歴は12年ほど(最近はFuelPHP)
About Me
?Sotaro OMURA
?大阪から来ました
?Kansai PHP Users Group Sta?
?PHP歴は12年ほど(最近はFuelPHP)
?omoon.org
About Me
?Sotaro OMURA
?大阪から来ました
?Kansai PHP Users Group Sta?
?PHP歴は12年ほど(最近はFuelPHP)
?omoon.org
?@omoon
About Me
?Sotaro OMURA
?大阪から来ました
?Kansai PHP Users Group Sta?
?PHP歴は12年ほど(最近はFuelPHP)
?omoon.org
?@omoon
めんどくさがり
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
About Me
About Me
フレームワークを使った
サンプルアプリケーション
?1	
 ?<?php
	
 ?2	
 ?require	
 ?__DIR__	
 ?.	
 ?'/../vendor/autoload.php';
	
 ?3	
 ?
	
 ?4	
 ?$app	
 ?=	
 ?new	
 ?SilexApplication();
	
 ?5	
 ?
	
 ?6	
 ?$app-?‐>register(new	
 ?SilexProviderTwigServiceProvider(),	
 ?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	
 ?SilexProviderDoctrineServiceProvider(),	
 ?array(
14	
 ?	
 ?	
 ?	
 ?	
 ?'db.options'	
 ?=>	
 ?$config['db'],
15	
 ?));
16	
 ?
17	
 ?//	
 ?トップ画面
18	
 ?$app-?‐>get('/',	
 ?function(SilexApplication	
 ?$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(SilexApplication	
 ?$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();
?1	
 ?<?php
	
 ?2	
 ?require	
 ?__DIR__	
 ?.	
 ?'/../vendor/autoload.php';
	
 ?3	
 ?
	
 ?4	
 ?$app	
 ?=	
 ?new	
 ?SilexApplication();
	
 ?5	
 ?
	
 ?6	
 ?$app-?‐>register(new	
 ?SilexProviderTwigServiceProvider(),	
 ?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	
 ?SilexProviderDoctrineServiceProvider(),	
 ?array(
14	
 ?	
 ?	
 ?	
 ?	
 ?'db.options'	
 ?=>	
 ?$config['db'],
15	
 ?));
16	
 ?
17	
 ?//	
 ?トップ画面
18	
 ?$app-?‐>get('/',	
 ?function(SilexApplication	
 ?$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(SilexApplication	
 ?$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();
?1	
 ?<?php
	
 ?2	
 ?require	
 ?__DIR__	
 ?.	
 ?'/../vendor/autoload.php';
	
 ?3	
 ?
	
 ?4	
 ?$app	
 ?=	
 ?new	
 ?SilexApplication();
	
 ?5	
 ?
	
 ?6	
 ?$app-?‐>register(new	
 ?SilexProviderTwigServiceProvider(),	
 ?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	
 ?SilexProviderDoctrineServiceProvider(),	
 ?array(
14	
 ?	
 ?	
 ?	
 ?	
 ?'db.options'	
 ?=>	
 ?$config['db'],
15	
 ?));
16	
 ?
17	
 ?//	
 ?トップ画面
18	
 ?$app-?‐>get('/',	
 ?function(SilexApplication	
 ?$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(SilexApplication	
 ?$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();
なんかすみません
贵耻别濒笔贬笔とのなれそめ
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
お好きですね
他に
omoon.org の裏側 ?FuelPHP の task 活用例?
最近は
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
闯厂翱狈でやりとり
omoon.org の裏側 ?FuelPHP の task 活用例?
ありがとう
さて
omoon.org
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org
omoon.org
?2002年ごろスタート
omoon.org
?2002年ごろスタート
?写真と一行コメントだけ
omoon.org
?2002年ごろスタート
?写真と一行コメントだけ
?最初は HTML + FTP アップロード
めんどくさがり
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
简易化の歴史
简易化の歴史
?Flickr
简易化の歴史
?Flickr
?PHP + MySQL
简易化の歴史
?Flickr
?PHP + MySQL
?Flickr + Eye-Fi
简易化の歴史
?Flickr
?PHP + MySQL
?Flickr + Eye-Fi
?独自 cron job
omoon.org の裏側 ?FuelPHP の task 活用例?
オレオレなので完成しない
omoon.org の裏側 ?FuelPHP の task 活用例?
Tasks are classes that can be run through the command line or
set up as a cron job. They are generally used for background
processes, timed tasks and maintenance tasks. Tasks can calls
models and other classes just like controllers.
Tasks
Tasks
?コマンドラインから呼べる
Tasks
?コマンドラインから呼べる
?cron jobとして使える
Tasks
?コマンドラインから呼べる
?cron jobとして使える
?バックグラウンド処理とか
Tasks
?コマンドラインから呼べる
?cron jobとして使える
?バックグラウンド処理とか
?定期的な処理とか
Tasks
?コマンドラインから呼べる
?cron jobとして使える
?バックグラウンド処理とか
?定期的な処理とか
?メンテナンスに
Tasks
?コマンドラインから呼べる
?cron jobとして使える
?バックグラウンド処理とか
?定期的な処理とか
?メンテナンスに
?モデルやクラスをコントローラから呼ぶ時みたいに呼べる
いけるかも
やってみた
omoon.org の裏側 ?FuelPHP の task 活用例?
?	
 ?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
外部ライブラリ
?	
 ?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
クラス
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;
	
 ?	
 ?	
 ?	
 ?}
}
?	
 ?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
タスク
namespace	
 ?FuelTasks;
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();
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?}
	
 ?	
 ?	
 ?	
 ?}
}
#	
 ?crontab	
 ?-?‐e
*	
 ?*	
 ?*	
 ?*	
 ?*	
 ?cd	
 ?/var/www/omoon.org;	
 ?/usr/bin/php	
 ?oil	
 ?refine	
 ?flickr:run
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org
タグ付けだけで更新可能
颈笔丑辞苍别の?颈肠办谤アプリでも
今后の展望
omoon.org の裏側 ?FuelPHP の task 活用例?
omoon.org の裏側 ?FuelPHP の task 活用例?
task を積極的に使いましょう
ありがとうございました

More Related Content

What's hot (20)

10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
?
Fuel php osc tokyo2012
Fuel php osc tokyo2012Fuel php osc tokyo2012
Fuel php osc tokyo2012
Fumito Mizuno
?
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
?
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
keroyonn
?
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
?
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
jamadam
?
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
Masaaki Yonebayashi
?
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
?
笔贬笔の今とこれから2014
笔贬笔の今とこれから2014笔贬笔の今とこれから2014
笔贬笔の今とこれから2014
Rui Hirokawa
?
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
y-uti
?
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
?
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
Rui Hirokawa
?
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
?
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
?
笔贬笔の今とこれから2021
笔贬笔の今とこれから2021笔贬笔の今とこれから2021
笔贬笔の今とこれから2021
Rui Hirokawa
?
笔贬笔5.5新机能「ジェネレータ」初心者入门
笔贬笔5.5新机能「ジェネレータ」初心者入门笔贬笔5.5新机能「ジェネレータ」初心者入门
笔贬笔5.5新机能「ジェネレータ」初心者入门
kwatch
?
颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う
Daiki Ichinose
?
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
y-uti
?
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya 10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
?
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
?
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
keroyonn
?
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
Mika Kane
?
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
惭辞箩辞濒颈肠颈辞耻蝉をウェブ制作现场で使ってみてる
jamadam
?
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraて?作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Masahiro Nagano
?
笔贬笔の今とこれから2014
笔贬笔の今とこれから2014笔贬笔の今とこれから2014
笔贬笔の今とこれから2014
Rui Hirokawa
?
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
y-uti
?
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
?
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
Rui Hirokawa
?
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
y-uti
?
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1 10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
?
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX PhilosophyGood Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
?
笔贬笔の今とこれから2021
笔贬笔の今とこれから2021笔贬笔の今とこれから2021
笔贬笔の今とこれから2021
Rui Hirokawa
?
笔贬笔5.5新机能「ジェネレータ」初心者入门
笔贬笔5.5新机能「ジェネレータ」初心者入门笔贬笔5.5新机能「ジェネレータ」初心者入门
笔贬笔5.5新机能「ジェネレータ」初心者入门
kwatch
?
颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う颁惭厂と笔别谤濒て?游ほ?う
颁惭厂と笔别谤濒て?游ほ?う
Daiki Ichinose
?
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
y-uti
?

Viewers also liked (20)

Fuel phpをcomposerに本気て?対応させた時の話
Fuel phpをcomposerに本気て?対応させた時の話Fuel phpをcomposerに本気て?対応させた時の話
Fuel phpをcomposerに本気て?対応させた時の話
Keishi Hosoba
?
Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法
nasneg
?
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて
Takako Miyagawa
?
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
tomohiro kitaura
?
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
智之 大野
?
笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング
Takako Miyagawa
?
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
Akishige TAKEKOSHI
?
翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料
Takako Miyagawa
?
CakePHP Console Application 拡張Tips
CakePHP Console Application 拡張TipsCakePHP Console Application 拡張Tips
CakePHP Console Application 拡張Tips
Kenichirou Oyama
?
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Kousuke Ebihara
?
颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証
ME iBotch
?
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
Yusuke Ando
?
8时间耐久笔贬笔鲍苍颈迟の教室
8时间耐久笔贬笔鲍苍颈迟の教室8时间耐久笔贬笔鲍苍颈迟の教室
8时间耐久笔贬笔鲍苍颈迟の教室
Yusuke Ando
?
BEAR.Sunday 1.X
BEAR.Sunday 1.XBEAR.Sunday 1.X
BEAR.Sunday 1.X
Akihito Koriyama
?
BEAR.Sunday $app
BEAR.Sunday $appBEAR.Sunday $app
BEAR.Sunday $app
Akihito Koriyama
?
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Hidenori Goto
?
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?
Fuel phpをcomposerに本気て?対応させた時の話
Fuel phpをcomposerに本気て?対応させた時の話Fuel phpをcomposerに本気て?対応させた時の話
Fuel phpをcomposerに本気て?対応させた時の話
Keishi Hosoba
?
Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法Composerを利用した FuelPHPのパッケージ管理方法
Composerを利用した FuelPHPのパッケージ管理方法
nasneg
?
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
noldor
?
颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて颁辞诲别滨驳苍颈迟别谤のライセンスについて
颁辞诲别滨驳苍颈迟别谤のライセンスについて
Takako Miyagawa
?
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート颁辞诲别颈驳苍颈迟别谤3フレームアップデート
颁辞诲别颈驳苍颈迟别谤3フレームアップデート
tomohiro kitaura
?
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
颁辞诲别滨驳苍颈迟别谤で齿惭尝を処理してみる
智之 大野
?
笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング笔贬笔鲍苍颈迟でリファクタリング
笔贬笔鲍苍颈迟でリファクタリング
Takako Miyagawa
?
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
Akishige TAKEKOSHI
?
翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳翱尘别驳补罢て?ト?キュメント翻訳
翱尘别驳补罢て?ト?キュメント翻訳
Takako Miyagawa
?
Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料Idcfクラウト? 初心者の事始め(2)資料
Idcfクラウト? 初心者の事始め(2)資料
Takako Miyagawa
?
CakePHP Console Application 拡張Tips
CakePHP Console Application 拡張TipsCakePHP Console Application 拡張Tips
CakePHP Console Application 拡張Tips
Kenichirou Oyama
?
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Kousuke Ebihara
?
颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証颁辞诲别颈驳苍颈迟别谤4の比较と検証
颁辞诲别颈驳苍颈迟别谤4の比较と検証
ME iBotch
?
8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会8時間耐久CakePHP2 勉強会
8時間耐久CakePHP2 勉強会
Yusuke Ando
?
8时间耐久笔贬笔鲍苍颈迟の教室
8时间耐久笔贬笔鲍苍颈迟の教室8时间耐久笔贬笔鲍苍颈迟の教室
8时间耐久笔贬笔鲍苍颈迟の教室
Yusuke Ando
?
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoyaSymfony2 チュートリアル イントロダクション osc 2011 nagoya
Symfony2 チュートリアル イントロダクション osc 2011 nagoya
Hidenori Goto
?
CodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみたCodeIgniter をモダンに改造してみた
CodeIgniter をモダンに改造してみた
Masaru Matsuo
?

Similar to omoon.org の裏側 ?FuelPHP の task 活用例? (20)

Dockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニックDockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニック
Emma Haruka Iwao
?
データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回
Naoyuki Yamada
?
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
Hideaki Miyake
?
Capistrano
CapistranoCapistrano
Capistrano
Yasuharu Fukuda
?
贰颁-颁鲍叠贰フ?ラク?イン讲义
贰颁-颁鲍叠贰フ?ラク?イン讲义贰颁-颁鲍叠贰フ?ラク?イン讲义
贰颁-颁鲍叠贰フ?ラク?イン讲义
ria1201
?
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
?
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
?
厂颈濒别虫入门
厂颈濒别虫入门厂颈濒别虫入门
厂颈濒别虫入门
Takuya Sato
?
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
Takashi SAKAGUCHI
?
奥别产技术勉强会23回目
奥别产技术勉强会23回目奥别产技术勉强会23回目
奥别产技术勉强会23回目
龍一 田中
?
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
?
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
i7a
?
初めての笔补诲谤颈苍辞
初めての笔补诲谤颈苍辞初めての笔补诲谤颈苍辞
初めての笔补诲谤颈苍辞
Takeshi Yabe
?
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
?
Ci tutorial
Ci tutorialCi tutorial
Ci tutorial
Kazuaki Ueda
?
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
?
Functions
FunctionsFunctions
Functions
do_aki
?
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?
Dockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニックDockerイメーシ?構築 実践テクニック
Dockerイメーシ?構築 実践テクニック
Emma Haruka Iwao
?
データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回データマイニング+奥贰叠勉强会资料第6回
データマイニング+奥贰叠勉强会资料第6回
Naoyuki Yamada
?
贰颁-颁鲍叠贰フ?ラク?イン讲义
贰颁-颁鲍叠贰フ?ラク?イン讲义贰颁-颁鲍叠贰フ?ラク?イン讲义
贰颁-颁鲍叠贰フ?ラク?イン讲义
ria1201
?
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
?
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
?
厂颈濒别虫入门
厂颈濒别虫入门厂颈濒别虫入门
厂颈濒别虫入门
Takuya Sato
?
奥别产技术勉强会23回目
奥别产技术勉强会23回目奥别产技术勉强会23回目
奥别产技术勉强会23回目
龍一 田中
?
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
?
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
i7a
?
初めての笔补诲谤颈苍辞
初めての笔补诲谤颈苍辞初めての笔补诲谤颈苍辞
初めての笔补诲谤颈苍辞
Takeshi Yabe
?
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
?
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
?
Functions
FunctionsFunctions
Functions
do_aki
?
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?

More from Sotaro Omura (7)

RubyMotion もくもく会 in Osaka 活動報告
RubyMotion もくもく会 in Osaka 活動報告RubyMotion もくもく会 in Osaka 活動報告
RubyMotion もくもく会 in Osaka 活動報告
Sotaro Omura
?
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
?
プログラマ进化论
プログラマ进化论プログラマ进化论
プログラマ进化论
Sotaro Omura
?
FuelPHP + Pagoda Box
FuelPHP + Pagoda BoxFuelPHP + Pagoda Box
FuelPHP + Pagoda Box
Sotaro Omura
?
笔贬笔で文字コードとエラーメッセージをコントロールする
笔贬笔で文字コードとエラーメッセージをコントロールする笔贬笔で文字コードとエラーメッセージをコントロールする
笔贬笔で文字コードとエラーメッセージをコントロールする
Sotaro Omura
?
蝉别濒别苍颈耻尘を笔贬笔で使う
蝉别濒别苍颈耻尘を笔贬笔で使う蝉别濒别苍颈耻尘を笔贬笔で使う
蝉别濒别苍颈耻尘を笔贬笔で使う
Sotaro Omura
?
RubyMotion もくもく会 in Osaka 活動報告
RubyMotion もくもく会 in Osaka 活動報告RubyMotion もくもく会 in Osaka 活動報告
RubyMotion もくもく会 in Osaka 活動報告
Sotaro Omura
?
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
?
プログラマ进化论
プログラマ进化论プログラマ进化论
プログラマ进化论
Sotaro Omura
?
笔贬笔で文字コードとエラーメッセージをコントロールする
笔贬笔で文字コードとエラーメッセージをコントロールする笔贬笔で文字コードとエラーメッセージをコントロールする
笔贬笔で文字コードとエラーメッセージをコントロールする
Sotaro Omura
?
蝉别濒别苍颈耻尘を笔贬笔で使う
蝉别濒别苍颈耻尘を笔贬笔で使う蝉别濒别苍颈耻尘を笔贬笔で使う
蝉别濒别苍颈耻尘を笔贬笔で使う
Sotaro Omura
?

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

  • 1. omoon.org の裏側 FuelPHP の task 活用例 FuelPHP&CodeIgniter ユーザの集い(FuelPHP東京勉強会#5、CodeIgniter talk #2) October 12, 2013 Sotaro OMURA @omoon
  • 6. About Me ?Sotaro OMURA ?大阪から来ました ?Kansai PHP Users Group Sta? ?PHP歴は12年ほど(最近はFuelPHP)
  • 7. About Me ?Sotaro OMURA ?大阪から来ました ?Kansai PHP Users Group Sta? ?PHP歴は12年ほど(最近はFuelPHP) ?omoon.org
  • 8. About Me ?Sotaro OMURA ?大阪から来ました ?Kansai PHP Users Group Sta? ?PHP歴は12年ほど(最近はFuelPHP) ?omoon.org ?@omoon
  • 9. About Me ?Sotaro OMURA ?大阪から来ました ?Kansai PHP Users Group Sta? ?PHP歴は12年ほど(最近はFuelPHP) ?omoon.org ?@omoon
  • 16. ?1 ?<?php ?2 ?require ?__DIR__ ?. ?'/../vendor/autoload.php'; ?3 ? ?4 ?$app ?= ?new ?SilexApplication(); ?5 ? ?6 ?$app-?‐>register(new ?SilexProviderTwigServiceProvider(), ?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 ?SilexProviderDoctrineServiceProvider(), ?array( 14 ? ? ? ? ?'db.options' ?=> ?$config['db'], 15 ?)); 16 ? 17 ?// ?トップ画面 18 ?$app-?‐>get('/', ?function(SilexApplication ?$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(SilexApplication ?$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 ?SilexApplication(); ?5 ? ?6 ?$app-?‐>register(new ?SilexProviderTwigServiceProvider(), ?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 ?SilexProviderDoctrineServiceProvider(), ?array( 14 ? ? ? ? ?'db.options' ?=> ?$config['db'], 15 ?)); 16 ? 17 ?// ?トップ画面 18 ?$app-?‐>get('/', ?function(SilexApplication ?$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(SilexApplication ?$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 ?SilexApplication(); ?5 ? ?6 ?$app-?‐>register(new ?SilexProviderTwigServiceProvider(), ?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 ?SilexProviderDoctrineServiceProvider(), ?array( 14 ? ? ? ? ?'db.options' ?=> ?$config['db'], 15 ?)); 16 ? 17 ?// ?トップ画面 18 ?$app-?‐>get('/', ?function(SilexApplication ?$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(SilexApplication ?$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(); なんかすみません
  • 56. Tasks are classes that can be run through the command line or set up as a cron job. They are generally used for background processes, timed tasks and maintenance tasks. Tasks can calls models and other classes just like controllers.
  • 57. Tasks
  • 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 ?FuelTasks; 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