Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Upgrading from PHP 5.3 to 5.5
Glen Mailer
October 05, 2013
Programming
1
900
Upgrading from PHP 5.3 to 5.5
A small talk on the experiences gained from migrating from PHP 5.3 to 5.5.
Glen Mailer
October 05, 2013
Tweet
Share
More Decks by Glen Mailer
See All by Glen Mailer
Are you afraid of dependencies?
glenjamin
0
42
How to React Appropriately
glenjamin
1
320
Bumping our Stack to PHP 5.5
glenjamin
0
150
Message Queues for Everyone
glenjamin
1
110
Messages queues don't need to be scary.
glenjamin
1
87
Other Decks in Programming
See All in Programming
roadmap to rust 2024
matsu7874
1
580
Monadic Java
mariofusco
4
250
Testing, how hard can it be? (Droidcon Lisbon 2022)
dpreussler
3
200
You CANt teach an old dog new tricks
michaelbukachi
0
110
Android Architecture Design With Koin
agiuliani
0
210
PublishでWebサイトを構築してみた / generate_website_with_publish
uhooi
2
110
About Type Syntax Proposal
quramy
1
890
Is Rust a great language for building Kubernetes ecosystem
deepu105
0
140
SPA/MPA 議論の俯瞰と 現代における設計のポイント - #tfcon 2022 フロントエンド設計
ahomu
3
1.5k
Improve Build Times in Less Time
zacsweers
6
2.7k
人類には難しいZynqで組み込みRust
ikemori
0
480
CIでAndroidUIテストの様子を録画してみた
mkeeda
0
130
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1020
410k
Why You Should Never Use an ORM
jnunemaker
PRO
47
5.5k
WebSockets: Embracing the real-time Web
robhawkes
57
5k
The World Runs on Bad Software
bkeepers
PRO
56
5.2k
The Language of Interfaces
destraynor
148
20k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
125
8.5k
Happy Clients
brianwarren
89
5.5k
Web development in the modern age
philhawksworth
197
9.3k
Teambox: Starting and Learning
jrom
121
7.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
12k
Designing the Hi-DPI Web
ddemaree
272
32k
Six Lessons from altMBA
skipperchong
14
1.3k
Transcript
None
Glen Mailer
The Codebase
First commit April 2010 60k commits since
9300 PHP files 690k lines of code According to git
and cloc
10 releases a week 35 active committers 10 concurrent streams
1 deployable
The Platform
8 Test Environments 1 Staging Environment 2 Live Environments
74 Live PHP boxes
1300 req/s peak 500k uniques/week
Why?
Using basically the same PHP version as the first commit
with security patches
PHP 5.3 is dead
Bug fixes Performance
New Features! short array syntax traits $this in closures yield
finally
but no smoking gun
Bug #64827 GC causes segfaults
The Plan
Upgrade a dev box Support 5.3 and 5.5 Pass all
tests Upgrade 1 Test env Upgrade CI Upgrade Test & Staging Incrementally Upgrade Live
Vagrant Chef Unit Tests Acceptance Tests
Hack hack hack...
3 days later
What changed?
APC becomes OPcache and APCu
Check for new function, fall back to old one if
(function_exists('opcache_reset')) { opcache_reset(); } else { apc_clear_cache(); }
“The PHP api will retain compatibility with APC, as will
common configuration options, providing a drop in replacement.” APCu
Not a drop in replacement
APCu 4.0.1 APCu 4.0.2
No more mysql_
It will not be missed
preg_replace /e becomes preg_replace_callback
(string) array() Now raises a warning Still returns “Array”
Type-checked function function inc($int) { if (!is_int($int)) { throw new
InvalidArgumentException( 'Expected int, got: ' . $int ); } return $int + 1; }
Unit test for type-checked function /** * @dataprovider provideIncInvalid */
function testIncRejectsInvalid($a) { try { inc($a); $this->fail('Expected exception'); } catch (InvalidArgumentException $ex) {} } function provideIncInvalid() { return array( null, true, "string", array() ); }
Simplest fix throw new InvalidArgumentException( 'Expected int, got: ' .
json_encode($int) );
$a = "string”; $a['index']; Now raises a warning
// protected $a; ++$this->a Now raises a warning
Progress
Upgrade a dev box Support 5.3 and 5.5 Pass all
tests Upgrade 1 Test env Upgrade CI Upgrade Test & Staging Incrementally Upgrade Live
Upgrade a dev box Support 5.3 and 5.5 Pass all
tests Upgrade 1 Test env Upgrade CI Upgrade Test & Staging Incrementally Upgrade Live
What now?
Finish Migrating Live
See if the hard to reproduce failures have stopped
Start using new features!
Keep up to date
You should upgrade too!
Fin.
Questions?
@glenathan https://joind.in/9473