List of PHP accelerators

Last updated

This is a list of PHP accelerators.

Alternative PHP Cache (APC)

Alternative PHP Cache is a free and open (PHP license) framework that caches the output of the PHP bytecode compiler in shared memory, thus reducing parsing and disk I/O overhead for later requests; and a shared memory cache for user data. For an application consisting of a large source code base such as Drupal, a 3x increase in page generation speed is possible as a result. [1]

Contents

It has been used at Facebook and has a mature codebase thanks to numerous contributors, including Facebook itself. [2]

APC was originally scheduled for inclusion into the PHP core no later than PHP 6. [3] While multiple accelerator projects were considered desirable, [4] the focus has since moved to Optimizer Plus, [5] [6] and, later, Zend OPcache that is included in the core distribution as of PHP 5.5. [7] Since March 2013, a beta version of APCu (APC User Cache) is available, in which all opcode caching abilities have been removed to support user caches in shared memory using the familiar APC API. [8]

eAccelerator

eAccelerator was born in December 2004 as a fork of the Turck MMCache project. Turck MMCache was created by Dmitry Stogov and much of the eAccelerator code is still based on his work. eAccelerator also contained a PHP encoder and loader, but the development staff discontinued the encoder and removed this feature after December 2006.

ionCube PHP Accelerator

Launched in 2001, ionCube PHP Accelerator (PHPA) was the first freely available PHP accelerator to compete with the commercial Zend Cache product. Created before ionCube Ltd. was founded and at a time when the performance of PHP was regarded as lackluster when compared to other popular web programming languages,[ citation needed ] PHPA showed that PHP can compete with other languages performance-wise.[ citation needed ] Although the author of PHPA chose to keep the project closed source in response to early concerns raised by Zeev Suraski of Zend Technologies about the effect that an open source rival might have on their commercial alternative, the availability of PHPA on a wide variety of platforms led to its extensive adoption worldwide from small sites to Yahoo!.[ citation needed ] It also inspired the redevelopment of APC to use the shared memory execution techniques that PHPA and Zend Cache had adopted instead of deserialization on each request that incurred performance penalties.[ citation needed ]

Turck MMCache

Turck MMCache is now discontinued.[ citation needed ] eAccelerator is a fork of Turck MMCache.

XCache

XCache is a fast, stable PHP opcode cacher that has been tested and is now running on production servers under high load. It is tested on Linux and FreeBSD and supported under Windows, for thread-safe and non-thread-safe versions of PHP. This relatively new opcode caching software has been developed by mOo, one of the developers of Lighttpd, to overcome some of the limitations of the existing solutions at that time; such as being able to use it with new PHP versions as they arrive.

Nusphere PhpExpress

PhpExpress is a free PHP opcode cache that loads both Nu-Coder (commercial) encoded and plain PHP files directly into the PHP engine, saving loading time and boosting performance of PHP applications. It's available on Windows, Linux, FreeBSD, NetBSD, Mac OS X, and Solaris.

Zend OPcache (ex. Zend Optimizer+)

Zend OPcache [9] is an open source [10] component of Zend Server and Zend Server Community Edition bundled with the PHP language itself. [7] Zend OPcache speeds up PHP execution by opcode caching and optimization. It stores precompiled script bytecode in shared memory. As of version 7.0 it can store precompiled script bytecode on disk. This eliminates the stages of reading code from the disk and compiling it on future access. For further performance improvements, the stored bytecode is optimized for faster execution. Unlike Zend Optimizer, Zend OPcache doesn't load files encoded by Zend Guard. Zend provides another component, Zend Guard Loader, in order to load encoded applications with Zend Server and Zend Server Community Edition.

Zend Optimizer+ was renamed to Zend OPcache mid of March 2013.

Starting with PHP 5.5 the Zend OPcache is integrated and shipped with PHP. [7]

Zend Platform

Zend Platform (formerly Zend Cache and then Zend Accelerator) is a commercial Web Application Server product. It has a complete set of performance capabilities that includes more than a simple PHP accelerator. Features include code caching/acceleration, data caching, content (html output) caching, download optimization and off-line (asynchronous) processing capabilities that can result in significant performance improvements for most PHP applications. It also includes detailed PHP monitoring and root cause analysis support to help in tuning and debugging, session fail-over support for HA (High Availability) needs and other integration capabilities including Java integration.

Zend Platform and Zend Core are now in 'end of life' status [11] and are replaced with Zend Server. [12]

Windows Cache Extension for PHP

A free, open source (New BSD License), PHP accelerator developed by Microsoft for PHP under Windows. The extension includes PHP opcode cache, file cache, resolve file path cache, object/session cache, file change notifications and lock/unlock API's. Combination of all these caches results in significant performance improvements for PHP applications hosted on Windows. The extension is primarily used with Internet Information Services and non-thread-safe build of PHP via FastCGI protocol.

Comparison of features

NameAvailabilityOpcode cacheFile cacheResolve file path cacheObject/session cacheOptimizationCache in memorySource encoding
APCDiscontinuedYesYes?YesYesYesNo
eAcceleratorDiscontinuedYesYes???Yes?
PHP Accelerator (PHPA)DiscontinuedYesYes?NoYesYesNo
Turck MMCacheDiscontinued???????
XCacheDiscontinuedYesYes?YesNo [13] Yes?
Nusphere PhpExpressDiscontinuedYes??????
Zend OPcache (ex. Zend Optimizer+)MaintainedYesYes?NoYesYesNo
Zend PlatformDiscontinued???????
Windows CacheMaintainedYesYesYesYes?Yes?

Compatibility chart

PHP acceleratorsAvailabilityOSWeb serversPHP version
WindowsLinuxFreeBSDmacOSNetBSDSolarisIISApacheNginx5.25.35.45.55.67.07.17.27.3
APCDiscontinuedYesYesYesYes?Yes?YesYesYesYesYesNoNoNoNoNoNo
eAcceleratorDiscontinuedYesYesYes??YesYesYesYesYesYesYesNoNoNoNoNoNo
ionCubeDiscontinuedYesYesYesYes?Yes?Yes?YesYesYesYesYesYesYesYesNo
Turck MMCacheDiscontinued?????????YesNoNoNoNoNoNoNoNo
XCacheDiscontinuedYesYesYesYes???YesYesYesYesYesYesYesNoNoNoNo
Nusphere PhpExpressDiscontinuedYesYesYesYesYesYes???YesYesNoNoNoNoNoNoNo
Zend OPcache (ex. Zend Optimizer+)MaintainedYesYesYesYes?NoYesYesYesYesYesYesYesYesYesYesYesYes
Zend Platform [14] DiscontinuedNoYesNoNoNoYesNoYesNoYesNoNoNoNoNoNoNoNo
Windows CacheMaintainedYesNoNoNoNoNoYes??YesYesYesYesYesYesYesYes?

Other products

Zend Guard Loader, formerly known as Zend Optimizer, is a free PHP extension by Zend Technologies that loads files encoded and obfuscated by Zend Guard. [15] It does not optimize or cache PHP's byte code.

See also

Related Research Articles

<span class="mw-page-title-main">PHP</span> Scripting language created in 1994

PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. PHP was originally an abbreviation of Personal Home Page, but it now stands for the recursive initialism PHP: Hypertext Preprocessor.

Bytecode is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.

<span class="mw-page-title-main">Squid (software)</span> Caching and forwarding HTTP web proxy

Squid is a caching and forwarding HTTP web proxy. It has a wide variety of uses, including speeding up a web server by caching repeated requests, caching World Wide Web (WWW), Domain Name System (DNS), and other network lookups for a group of people sharing network resources, and aiding security by filtering traffic. Although used for mainly HTTP and File Transfer Protocol (FTP), Squid includes limited support for several other protocols including Internet Gopher, Secure Sockets Layer (SSL), Transport Layer Security (TLS), and Hypertext Transfer Protocol Secure (HTTPS). Squid does not support the SOCKS protocol, unlike Privoxy, with which Squid can be used in order to provide SOCKS support.

The Zend Engine is a compiler and runtime environment for the PHP scripting language and consists of the Zend Virtual Machine, which is composed of the Zend Compiler and the Zend Executor, that compiles and executes the PHP code. It was originally developed by Andi Gutmans and Zeev Suraski while they were students at the Technion – Israel Institute of Technology. They later founded a company called Zend Technologies in Ramat Gan, Israel. The name Zend is a combination of their forenames, Zeev and Andi.

In computing, just-in-time (JIT) compilation is compilation during execution of a program rather than before execution. This may consist of source code translation but is more commonly bytecode translation to machine code, which is then executed directly. A system implementing a JIT compiler typically continuously analyses the code being executed and identifies parts of the code where the speedup gained from compilation or recompilation would outweigh the overhead of compiling that code.

<span class="mw-page-title-main">Zend (company)</span>

Zend, formerly Zend Technologies, is a Minneapolis, Minnesota-based software company. The company's products, which include Zend Studio, assist software developers with developing, deploying, and managing PHP-based web applications.

MMCache, also known as Turck MMCache, is a PHP accelerator, or an extension to PHP meant to improve performance. It is structured as a simple proxy server between the web server and the web browser. Its most important feature is using memcached for caching the data in memory. MMCache is free software released under the GNU GPL 2.0. The key identifying the given site is designated from the URL, so if, for example, there is a session defined within the URL, then the proxy will not work effectively.

lighttpd

lighttpd is an open-source web server optimized for speed-critical environments while remaining standards-compliant, secure and flexible. It was originally written by Jan Kneschke as a proof-of-concept of the c10k problem – how to handle 10,000 connections in parallel on one server, but has gained worldwide popularity. Its name is a portmanteau of "light" and "httpd".

eAccelerator is a PHP accelerator derived from the MMCache extension for the PHP programming language. eAccelerator provides a bytecode cache. eAccelerator is open source and thereby free to use and distribute. Old and unmaintained versions also provided an encoder.

A web accelerator is a proxy server that reduces website access time. They can be a self-contained hardware appliance or installable software.

Laminas Project is an open source, object-oriented web application framework implemented in PHP 7 and licensed under the New BSD License. The framework is basically a collection of professional PHP-based packages. The framework uses various packages by the use of Composer as part of its package dependency managers; some of them are PHPUnit for testing all packages, Travis CI for continuous Integration Services. Laminas provides to users a support of the model–view–controller (MVC) in combination with Front Controller solution. MVC implementation in Laminas has five main areas. The router and dispatcher functions to decide which controller to run based on data from URL, and controller functions in combination with the model and view to develop and create the final web page.

<span class="mw-page-title-main">HTTP compression</span> Capability that can be built into web servers and web clients

HTTP compression is a capability that can be built into web servers and web clients to improve transfer speed and bandwidth utilization.

WURFL is a set of proprietary application programming interfaces (APIs) and an XML configuration file which contains information about device capabilities and features for a variety of mobile devices, focused on mobile device detection. Until version 2.2, WURFL was released under an "open source / public domain" license. Prior to version 2.2, device information was contributed by developers around the world and the WURFL was updated frequently, reflecting new wireless devices coming on the market. In June 2011, the founder of the WURFL project, Luca Passani, and Steve Kamerman, the author of Tera-WURFL, a popular PHP WURFL API, formed ScientiaMobile, Inc to provide commercial mobile device detection support and services using WURFL. As of August 30, 2011, the ScientiaMobile WURFL APIs are licensed under a dual-license model, using the AGPL license for non-commercial use and a proprietary commercial license. The current version of the WURFL database itself is no longer open source.

A PHP accelerator is a PHP extension designed to improve the performance of software applications written in the PHP programming language.

Varnish is a reverse caching proxy used as HTTP accelerator for content-heavy dynamic web sites as well as APIs. In contrast to other web accelerators, such as Squid, which began life as a client-side cache, or Apache and nginx, which are primarily origin servers, Varnish was designed as an HTTP accelerator. Varnish is focused exclusively on HTTP, unlike other proxy servers that often support FTP, SMTP, and other network protocols.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

Resin is a web server and Java application server developed by Caucho Technology. There are currently two versions available: Resin (GPL), which is free for production use, and Resin Pro, designed for enterprise and production environments with a licensing fee. Resin supports the Java EE standard and features a mod_php/PHP-like engine known as Quercus.

Zend Server is a complete and certified PHP distribution stack originally developed by Zend Technologies intended for high performance and scalable use cases.

HipHop for PHP (HPHPc) is a discontinued PHP transpiler created by Facebook. By using HPHPc as a source-to-source compiler, PHP code is translated into C++, compiled into a binary and run as an executable, as opposed to the PHP's usual execution path of PHP code being transformed into opcodes and interpreted. HPHPc consists mainly of C++, C and PHP source codes, and it is free and open-source software distributed under the PHP License.

HipHop Virtual Machine (HHVM) is an open-source virtual machine based on just-in-time (JIT) compilation that serves as an execution engine for the Hack programming language. By using the principle of JIT compilation, Hack code is first transformed into intermediate HipHop bytecode (HHBC), which is then dynamically translated into x86-64 machine code, optimized, and natively executed. This contrasts with PHP's usual interpreted execution, in which the Zend Engine transforms PHP source code into opcodes that serve as a form of bytecode, and executes the opcodes directly on the Zend Engine's virtual CPU.

References

  1. "Benchmarking Drupal with PHP op-code caches: APC, eAccelerator and XCache compared | 2bits.com, Inc. - Drupal Performance Optimization, Development, Managed Hosting, Customization and Consulting". 2bits.com. Retrieved 2014-02-14.
  2. "PHP and Facebook". Blog.facebook.com. Retrieved 2014-02-14.
  3. "'[PHP-DEV] APC in trunk' thread - MARC". Marc.info. Retrieved 2014-02-14.
  4. "'Re: [PHP-DEV] APC in trunk' - MARC". Marc.info. Retrieved 2014-02-14.
  5. "PHP: rfc:optimizerplus". Wiki.php.net. Retrieved 2014-02-14.
  6. "PHP :: Bug #64625 :: Segfault on PHP 5.4.13 and APC 3.1.13". Bugs.php.net. Retrieved 2014-02-14.
  7. 1 2 3 "[VOTE] Integrating Zend Optimizer+ into the PHP distribution". PHP.net. Retrieved 2013-03-08.
  8. "PECL :: Package :: APCu". Pecl.php.net. Retrieved 2014-02-14.
  9. "Zend Optimizer+". Zend Technologies . Retrieved 2011-03-09.
  10. "ZendOptimizerPlus - GitHub". GitHub . Retrieved 2013-02-13.
  11. "Enterprise PHP Solutions | Zend by Perforce".
  12. "Zend Server - PHP Web Application Server". Zend.com. Retrieved 2014-02-14.
  13. "Faq – XCache" . Retrieved 2017-12-01.
  14. "Zend Platform 3.6.3 Release Notes" . Retrieved 2017-01-19.
  15. "Zend Optimizer and Zend Guard Loader" . Retrieved June 22, 2011.