PHP is an HTML-embedded scripting language. Like Microsoft's ASP technology, it is designed to be processed on the server side and produce dynamic Web pages.
PHP3 is the third version of the interpreter initially developed by Rasmus Lerdorf. It was originally destined to bring dynamic scripting functionality to personal HTML Web pages, which explains why it was christened Personal Home Page. For the second version of PHP, its engine was rewritten so that HTML form management functionality could be added, and its name became PHP/Form Interpreter (PHP/FI) to reflect this change. The arrival of PHP3 coincided with the rise of the Internet wave, a time when many personal and professional users were in need of dynamic behavior on their Web sites: online catalogs and e-commerce applications with shopping cart management. PHP now officially stands for PHP: Hypertext Preprocessor.
PHP4 has finally obtained the 'Release' tag and can be downloaded at http://www.php.net./version4. Many high-traffic sites have already been using PHP4 for several months and no major problems have been reported. The interpreting engine has been completely rewritten in PHP4. In terms of internal architecture, this means that the interpreter is clearly separated from the rest of PHP (even if this is totally transparent to users or developers). In light of this, PHP's developers came up with a generic engine called Zend (http://www.zend.com/), whose name is a contraction of its author's names: Zeev Suraski and Andi Gutmans.
Architecture and Functionality
PHP3 and PHP4 are open software programs. Indeed, they propose an API that can be used to add functions to the languages. It is in this manner that numerous contributors progressively built upon the language's core functions and instructions by adding functions that make it possible to exploit all of the language's protocols and standards. The following elements can be cited as examples: an XML parser, manipulation of WDDX data, access to LDAP directories, and support for IMAP, POP and NNTP protocols. As such, PHP natively provides access to all existing. and future. intranet standards, and this is in a large part due to the community of developers involved in PHP's development. Moreover, PHP interfaces with a large number of proprietary and free DBMSs (MySQL, PostgrSQL, Oracle, Sybase, Informix, IBM DB2 and so on). Unlike Perl which offers an abstraction layer via DBI and DBDs, access to the various DBMSs depends on DBMS-specific functions. PHP does not offer database connection pooling.
PHP is multi-platform when it comes to operating systems and HTTP servers. Thus, PHP can run on all free and proprietary Unix systems, and on all HTTP servers supporting at least the CGI interface.
Nonetheless, PHP's favorite platform remains the one made up of the Unix/Apache couple. PHP3 can be used in CGI mode on most HTTP servers, but it offers the most features and much better performances when it is used as a loadable Apache module (like mod_perl). With PHP4 one now has the possibility to use PHP as an ISAPI filter with Microsoft's HTTP server.
PHP4's architecture is more open and scalable than that of PHP3, characteristics that spawned the ISAPI interface. Among its new functionalities, one finds session management and context variable manipulation primitives. In its latest version, PHP4 provides openness to the world of Java, thus enabling servlet execution and direct instantiation and manipulation of Java classes as if they were simple PHP classes. This "gateway" to Java has been tested using the JVMs of Sun, BlackDown and Kaffe on Linux and Windows NT systems only.
In terms of performance, PHP4 improves on its predecessor by at least 15%. In order to obtain even better performances, one must use PHP4 extensions. One of the three extensions, the optimizer, can currently be downloaded at no charge. It is important to point out that this optimizer is situated at the level of the interpreter's Zend engine. Therefore, this optimizer is not available under a free license, but under the same license as Zend, the QPL. One of the other announced extensions is the execution cache, which follows the same principle as the mod_perl Registry by enabling the storage of scripts that have been pretokenized, preanalyzed and preprocessed. The third extension will be a compiler for all PHP scripts. However, the compilers will probably come from third-party vendors and may be available under a free license.
PHP's open API makes it possible to extend the language by adding processing functions that are coded in C and used from PHP. These functions aim to improve performance, and do so in a transparent manner. In practice, this possibility is never used. The arrival of optimizers and other third-party compilers should provide a more elegant solution to performance problems than a combination of C and PHP.
Beyond the language itself, one of PHP's current strengths is that is offers a set of "ready-to-use" building blocks that were developed by PHP users and made available under free licenses. Among these essential building blocks one finds database administration interfaces such as phpMyAdmin and postgresAdmin; interactive forums such as Phorum, NeoBoard and W-Agora; HTML mail server access interfaces such as IMP, FocalMail; management of shared calendars and agendas such as TimeSheet and Keystone; indexing and search engines such as UdmSearch; HTML page templates such as FastTemplate; e-commerce business solutions such as eShop and FishCartSQL; and helpdesk management such as Ministry of Truth.
- PHP is principally available as source code for Unix and similar systems, and Windows platforms. Nonetheless, the binary units that are precompiled for Windows can be downloaded directly from the official Web site.
- PHP has become a part of all Linux distributions; it can be found as RPM or DEB packages, or in the software packages ported to FreeBSD.
- No official support, but there is a mailing list.
- GNU GPL for PHP3, PHP License for PHP4 (see details), but it is important to note that the Zend engine is available under a QPL license, which is the license for Troll Technologies' Qt library.