Facebook engineers have made it easier for developers to embed PHP by developing a PHPEmbed library.
"The library is just a more accessible and simplified application programming interface (API) built on top of the PHP Server API (SAPI). The library is so useful, we decided to share it with the world," writes Facebook Engineer Andrew 'Boz' Bosworth.
Bosworth said that the PHP programming language has solidified itself as the language of choice for many top Internet properties, including Facebook, as it is easy to use and integrates well with Apache, Memcache, and MySQL.
"Despite its suitability for web development and scripting, PHP is generally not the best choice for stand-alone software or servers. C++, on the other hand, is well suited for building both online and offline services," he writes.
"Unfortunately, if the new services operate with data managed by the existing PHP code base it can be dangerous to use a separate data access pattern. If the cache keys or database schema were to change in the PHP code base then the service would be broken (and potentially corrupting data for the PHP code base) until the code was updated and the program recompiled and restarted."
It was in response to this problem that Bosworth and his colleagues decided to embed the PHP Interpreter into C++ binaries.
"This isn't a novel endeavor by any means; Apache uses the PHP Server API (SAPI) to accomplish exactly that. However, when we began attempting integration of our own we found that the SAPI required quite a bit of expertise to manipulate effectively," Bosworth says.