Boost PC performance: How more available memory can improve productivity
PHP 5.3
1. What’s New In
PHP 5.3?
PHP UK February 2009
Scott MacVicar
Friday, 27 February 2009
2. Feature Release
All PHP 5 code should still works
Backports everything except Unicode
from 6
Bug fixes from PHP 5.2
Friday, 27 February 2009
3. Namespaces
Mostly done at compile time
Saves extra long prefixes (Yay
framework developers)
Zend_Search_Lucene_Analysis_Analyzer_
Reduces class name conflicts
Multiple namespaces per file
Friday, 27 February 2009
4. Namespace Usage
Can Contain:
classes
functions
constants with the same name
Defined by statement namespace <x>;
Friday, 27 February 2009
6. You used ?!? WTF?
Symbol Use Symbol Use
% Modulus + Plus
^ Xor - Minus
* Multi / Division
~ Not ???
| Or : Else
& And ` Exec
Friday, 27 February 2009
10. Other Namespace
Things
__NAMESPACE__
global scope
__autoload(), get_class() and
get_parent_class() now return a full
qualified classname
Resolves internally then externally
Friday, 27 February 2009
12. Late Static Binding
Static references use to be resolved
at compile time
Static constants would correspond to
where they were defined
static:: is now resolved at runtime
Friday, 27 February 2009
15. Lambda Functions and
Closures
Functions on the fly
Ideal for things that require a
callback
create_function() is runtime based
__invoke method for Classes
Friday, 27 February 2009
18. Garbage Collector
GSoC 2007 Project
Looks for cyclic references
Increases overall memory usage
slightly
Good for long running scripts
Friday, 27 February 2009
22. Improved ini
handling
Change PHP settings similarly
to .htaccess when using FCGI
Per-directory ini settings
INI constants / variables
Friday, 27 February 2009
29. SPL Improvements
DualIterator SplStack
RecursiveTreeItera SplQueue
tor
SplHeap
SplArrayReference
SplFixedArray
DirectoryIterator
implements
ArrayAccess
Friday, 27 February 2009
30. NOWDOC
Like heredoc but without evaluation
Friday, 27 February 2009
31. enchant
Speel Cheking
Wraps around existing libraries
Supports platform dictionaries
HunSpell (Firefox, OpenOffice)
AppleSpell (OS X default)
Friday, 27 February 2009
32. fileinfo
Guess content type and encoding
Looks for magic byte sequences
Previously required external library
Provides mime_content_type() support
Friday, 27 February 2009
33. intl
Wrapper around IBM’s ICU library
Provides collation, normalization,
datetime and number / currency
formatting
IDN Support
Friday, 27 February 2009
34. MySQLnd
Developed by MySQL
Replaces libmysql and is bundled
Faster and uses less memory
Statistics
Friday, 27 February 2009
35. phar
Similar to Java’s JAR
PHP 5.3 can open and read phars
Can mount internal phar directories
Phar::mount(“cache/”, “/tmp/cache”);
Works with OPCode caches
Friday, 27 February 2009
37. Using Phar
Make a stub file
Build archive
Rejoice
Friday, 27 February 2009
38. SQLite3
OO API
Replaces old SQLite class
Bundles full text search
SQLite 3.6.11
Friday, 27 February 2009
39. Extensions removed
dbase sybase
fbsql
fdf
ncurses
ming
pspell
Friday, 27 February 2009
40. New Constants
__DIR__ PHP_DEBUG
PHP_MAJOR_VERSION PHP_MAXPATHLEN
PHP_MINOR_VERSION
PHP_RELEASE_VERSIO
N
PHP_VERSION_ID
Friday, 27 February 2009
41. Improved Performance
New scanner based on re2c
md5() now faster
require_once / include_once faster on
second usage
Improved memory usage due to
constants being marked as read only
Friday, 27 February 2009
42. Improved Performance
Improved engine stack implementation
Removed direct executor recursion
Use fastcall calling convention on
x86
Various opcode optimisations
Friday, 27 February 2009
43. Miscellaneous
Over 180 bug fixes
PCRE upgrade
SQLite upgrade
Stream improvements
OpenSSL improvements
Make JSON suck less
Friday, 27 February 2009
45. Questions?
Go download and test!
http://qa.php.net/
http://windows.php.net/
downloads.php
Slides
http://talks.macvicar.net
Friday, 27 February 2009