Java and PHP bridging

The__ Pressflow project is currently evaluating methods to offload performance-critical code to Java (or another high-performance, compiled language).

Tomcat to PHP

  • Java servlet with PHP inside (no calls from PHP to Java)
  • RHEL 5 + Tomcat 5.5 + PHP 5.2.11 with APC over FastCGI
  • ~40ms overhead for each Java-to-PHP request
  • This configuration is useless. The best way to deliver PHP pages directly remains Apache + mod_php.

JSP to PHP

  • Java servlet with PHP inside (no calls from PHP to Java)
  • RHEL 5 + Tomcat 5.5 + PHP 5.2.11 with APC over FastCGI
  • No significant performance difference between serving request directly with Tomcat and PHP versus using a JSP wrapper
  • A JSP wrapper provides no clean mechanism for PHP to send headers.
  • Serving a page purely from JSP scaled extremely well. There is potential for this configuration to handle some requests without connecting to PHP.

Tomcat to PHP and back

  • Java servlet with PHP inside (with calls from PHP to Java)
  • RHEL 5 + Tomcat 5.5 + PHP 5.2.11 with APC over FastCGI
  • Same Java-to-PHP performance as first configuration
  • PHP-to-Java requests take ~1-3ms
  • Have not measured the overhead of including the PHP-to-Java bridge code
  • This configuration is useless. The best way to deliver PHP pages directly remains Apache + mod_php.

JSP to PHP and back

  • Java servlet with PHP inside (with calls from PHP to Java)
  • RHEL 5 + Tomcat 5.5 + PHP 5.2.11 with APC over FastCGI
  • Same Java-to-PHP performance as first configuration
  • PHP-to-Java requests take ~1-3ms
  • Have not measured the overhead of including the PHP-to-Java bridge code

Apache mod_php to Java

  • Apache with mod_php (with calls from PHP to Java)
  • RHEL 5 + Apache 2.2 + PHP 5.2.11 with APC over mod_php + Tomcat 5.5
  • HTTP client to PHP requests have < 2ms overhead
  • Loading the PHP-to-Java bridge takes 10-11ms
  • PHP-to-Java requests take ~1-3ms
  • Best configuration yet, but no potential to serve requests purely from Java.

Java to Quercus PHP to Java

  • RHEL 5 + Tomcat 5.5 + PHP via Quercus
  • Not tested yet
  • Should eliminate Java to PHP overhead
  • Caucho promises equivalent performance to PHP + APC with even their GPL version.
  • Only the proprietary version of Quercus supports compiling PHP.

The Zend Java bridge

  • Proprietary only
  • Untested

IBM Project Zero/WebSphere sMash

  • Not claimed to be production-ready