console apps: php artisan forthe:win
TRANSCRIPT
Console Apps: php artisan forthe:win
Joe Ferguson
Who Am I?Joe Ferguson
PHP Developer
Engineer @ Aol.
Twitter: @JoePFerguson
Organizer of @MemphisPHP
OSMI Board Member
@NomadPHP Lightning Talks
Passionate about Community
For Further Reading
https://leanpub.com/signalingphp
Console Apps?!
Shouldn’t we be doing this in __________ ?
Symfony Console
http://symfony.com/doc/current/components/console.html
Symfony Console
Artisan Console
Laravel Artisan
https://laravel.com/docs/5.3/artisan
Artisan Commands
Create a new Command
Create a new Command
app/Console/Kernel.php
BasicCommand.php
Signature
Description
Constructor
Handle The Command
Running our Command
Output Some Text
Output Some Text
Output Warning Text
Output Warning Text
Output Error Text
Output Error Text
How do we test the Command?
BasicCommandTest
BasicCommandTest
Adding Checks
BasicCommandTest
Database Backup
Create DatabaseBackupCommand
app/Console/Commands
Don’t forget Kernel.php!
app/Console/Commands
Look for our Command
Write our handle()
Write our handle()
But we use RDS!
Command SnapshotRds
Write our __construct()
Write our handle()
Running Our Command
AWS Console
I can do that automatically…
What if you don’t use RDS?
spatie/laravel-backup
AWS S3 File Storage
Configure S3ExampleCommand
List items in a bucket
List items in a bucket
Get an object by Key
Get an object by Key
Deleting old assets
Deleting old assets
Cache Data From APIs
Configure CacheApiDataCommand
dms/meetup-api-client
meetupConnect()
handle()
Command Arguments
Default in $signature
We need a way to persist the API data…
Database to the rescue!
Empty Migration
Event Details
Migration up()
Migration down()
Run Migrations
Create Meetup Model
Process the events
Check the database
Now we can pull events from our database
Elasticsearch
20 Events is a pretty small data set
GetAllMeetups*
*not all meetups
GetAllMeetups Command
A larger meetup group
Update the handle()
Run our command
Check the database
Batch Process Large Data Sets
Configure BatchProcessCommand
handle() BatchProcessCommand
Running meetup:expire
Schedule Our Commands
artisan schedule:run
Scheduling Commands
app/Console/Kernel.php
Scheduling Commands
Real World Twitter Demo
Questions?
Feedback!
https://joind.in/talk/2045d
Joe FergusonTwitter: @JoePFergusonEmail: [email protected]: joepferguson
Contact Info: