Debugging your PHP
Cake Application
Thursday, March 21, 13
Slide 2
Slide 2 text
about
n Developer and Operations at seatgeek.com
n Cake Core - Plugins Site and IRC Troll
n Open Source Contributor (github.com/josegonzalez)
Thursday, March 21, 13
Slide 3
Slide 3 text
Trace the Codepath
Thursday, March 21, 13
Slide 4
Slide 4 text
Thursday, March 21, 13
Slide 5
Slide 5 text
Thursday, March 21, 13
Slide 6
Slide 6 text
Thursday, March 21, 13
Slide 7
Slide 7 text
DERP
Thursday, March 21, 13
Slide 8
Slide 8 text
packages/dl/1/@{*
Thursday, March 21, 13
Slide 9
Slide 9 text
packages/dl/1/@{*
DERP
Thursday, March 21, 13
Slide 10
Slide 10 text
Thursday, March 21, 13
Slide 11
Slide 11 text
Showing Context
Thursday, March 21, 13
Slide 12
Slide 12 text
debug($herp)
/app/Controller/PackagesController.php (line 107)
'derp'
Thursday, March 21, 13
Slide 13
Slide 13 text
debug($herp)
/app/Controller/PackagesController.php (line 107)
'derp'
class name
Thursday, March 21, 13
Slide 14
Slide 14 text
debug($herp)
/app/Controller/PackagesController.php (line 107)
'derp'
line number
Thursday, March 21, 13
Slide 15
Slide 15 text
debug($herp)
/app/Controller/PackagesController.php (line 107)
'derp'
the good bits
Thursday, March 21, 13
overrides
var_dump
var_dump()
Thursday, March 21, 13
Slide 19
Slide 19 text
type
var_dump()
Thursday, March 21, 13
Slide 20
Slide 20 text
contents
var_dump()
Thursday, March 21, 13
Slide 21
Slide 21 text
length
var_dump()
Thursday, March 21, 13
Slide 22
Slide 22 text
xdebug_debug_zval()
Thursday, March 21, 13
Slide 23
Slide 23 text
tight loop goodies
xdebug_debug_zval()
Thursday, March 21, 13
Slide 24
Slide 24 text
Don’t Break
Production
Thursday, March 21, 13
Slide 25
Slide 25 text
debug(); die;
Thursday, March 21, 13
Slide 26
Slide 26 text
debug(); die;
Thursday, March 21, 13
Slide 27
Slide 27 text
diebug()
Thursday, March 21, 13
Slide 28
Slide 28 text
diebug()
Thursday, March 21, 13
Slide 29
Slide 29 text
Show Application
State
Thursday, March 21, 13
Slide 30
Slide 30 text
git clone git://github.com/cakephp/debug_kit
debug_kit
Thursday, March 21, 13
Slide 31
Slide 31 text
debug_kit
Thursday, March 21, 13
Slide 32
Slide 32 text
debug_kit
Thursday, March 21, 13
Slide 33
Slide 33 text
debug_kit
Thursday, March 21, 13
Slide 34
Slide 34 text
debug_kit
Thursday, March 21, 13
Slide 35
Slide 35 text
etc.
Thursday, March 21, 13
Slide 36
Slide 36 text
the server is part of
the application
Thursday, March 21, 13
Slide 37
Slide 37 text
SO TREAT IT AS
SUCH
Thursday, March 21, 13
Slide 38
Slide 38 text
redis-live
Thursday, March 21, 13
Slide 39
Slide 39 text
paramedic
Thursday, March 21, 13
Slide 40
Slide 40 text
varnishstat
Thursday, March 21, 13
Slide 41
Slide 41 text
statistics
are good
Thursday, March 21, 13
Slide 42
Slide 42 text
visualizations
are
Thursday, March 21, 13
Slide 43
Slide 43 text
Notify on Errors
Thursday, March 21, 13
Slide 44
Slide 44 text
first pass
Thursday, March 21, 13
Slide 45
Slide 45 text
second pass
Thursday, March 21, 13
Slide 46
Slide 46 text
third pass
Thursday, March 21, 13
Slide 47
Slide 47 text
fourth pass
Thursday, March 21, 13
Slide 48
Slide 48 text
fifth pass?
Thursday, March 21, 13
Slide 49
Slide 49 text
Verbose Logging
Thursday, March 21, 13
Slide 50
Slide 50 text
printf
Thursday, March 21, 13
Slide 51
Slide 51 text
no timestamp
printf
Thursday, March 21, 13
Slide 52
Slide 52 text
needs newlines
printf
Thursday, March 21, 13
Slide 53
Slide 53 text
SUCKS
printf
Thursday, March 21, 13
Slide 54
Slide 54 text
sgLogMessage
Thursday, March 21, 13
Slide 55
Slide 55 text
categorization
sgLogMessage
Thursday, March 21, 13
Slide 56
Slide 56 text
auto-out with
newlines
sgLogMessage
Thursday, March 21, 13
Slide 57
Slide 57 text
standard date
sgLogMessage
Thursday, March 21, 13
Slide 58
Slide 58 text
stored logs!
sgLogMessage
Thursday, March 21, 13
Slide 59
Slide 59 text
logs can never be too
VERBOSE
Thursday, March 21, 13
Slide 60
Slide 60 text
Unify Logging
Thursday, March 21, 13
Slide 61
Slide 61 text
log-aggregator
message parser
notification system
logstash
Thursday, March 21, 13
Slide 62
Slide 62 text
logstash
Thursday, March 21, 13
Slide 63
Slide 63 text
logstash
Thursday, March 21, 13
Slide 64
Slide 64 text
n Searchable logs
n Aggregate all logs in one place
n Alert, Notify, Create metrics from one place
n Empower your developers
¿logstash?
Thursday, March 21, 13
Slide 65
Slide 65 text
Aggregate Metrics
Thursday, March 21, 13
Slide 66
Slide 66 text
graphite
time-series data
graph rendering
simple graph url-api
Thursday, March 21, 13
Slide 67
Slide 67 text
graphite does not...
alert on data
collect data
export data
https://gist.github.com/3576242
Thursday, March 21, 13
Slide 68
Slide 68 text
Statsd::increment(‘seatgeek.www.php.e_warning’);
# sends data to statsd
# metrics aggregated
# view in your graphite backend
sending stats
Thursday, March 21, 13
Slide 69
Slide 69 text
interesting usecases
n check mysql replication length
n track conversions in your app
n expense tracking
n alerting systems
Thursday, March 21, 13