I'm trying to get as much performance as I can out of my application, which uses the Zend Framework.
I'm considering using the Zend Server, with APC enabled. However, I need to know a few things first.
Is there any benefit of using Zend Server + Zend Framework, or should I just use any ordinary system to host this?
Shamil
My tips for faster ZF (try from top to bottom):
Optimize include path
Use PHP 5.5 with OPCache enabled [NEW]
Cache table metadata
Favour viewHelpers over using action() view helper
Use classmap autoloader
Minimize path stacks
Strip require_once
Favour render() over partial() view helper
Cache anything possible
Zend_Locale::setCache(), Zend_Currency::setCache(), Zend_Db_Table::setDefaultMetadataCache(), configs...
Never use view helper action() or action helper actionStack()
Disable viewRenderer
Try my superlimunal plugin
Server-side file minification
$a
and$b
brought performance gain when having "dry" opcode cache and HDD under pressure.Any opcode cache is of course a must have ;) (APC, ZendOptimizer, etc.)
Op-code caching is the one extension you always want to use when running PHP in production. Apc is an op-code caching and data caching extension but in Zend server the primary op-code caching is called "Optimizer plus" and I recommend comparing the performance between the 2 before deciding to use APC. There is also another extension in Zend server which does the data caching job. Many file includes (like in Zend framework) are no longer a problem with op-code caching since they are stored compiled in memory and does not take long any more to start using them.
Another major performance gain can be achieved with the full (paid) version of Zend server by using the PHP monitoring combined with code tracing which gives valuable information regarding problems and un-optimized code in your application. problems like long scripts and function execution, long DB queries, and more can be solved very fast with this combination.
Zend Server is a very generally speaking PHP compiler (the P from LAMP or WAMP stack), however much more advanced, give you nice GUI to set everything (instead editing php.ini), but what more imported:
If you looking for APC only maybe other solutions (what I do not know yet) could be cheaper, but need for APC suggest that you would like caching and job quering... I love it.
Zend Framework is not needed to use it, but you can use any framework (or without framework) you want.
Nice thing that you can try ZS full featured it for free for 30 days (APC is not availble in CE ---->>>> wrong APC IS avaible in CE)
APC will help no matter what sort of stack you're running on. Any sort of OPcode caching will.
In terms of speeding up your application, the first step is to profile it. Use Xdebug to generate a cachegrind report and then use something like kcachegrind or webgrind to interpret it.
From working with Zend Framework, here are some pain points I typically find:
Page level caching will help tremendously. Anywhere where you dont need fresh data, cache it.
Past that its less of a Zend Framework or a server issue and it starts being architectural in nature. Can you farm off intensive tasks asynchronously? Sometimes it's not worth optimising something, but it is worth changing user perception to feel faster.
Amusing thought, the other day i backspaced over $i++ to replace it with ++$i. It's technically faster, but I'm sure the time it took me to do that will never be regained in the programs lifetime. You have to draw the line somewhere :)