Yakaz engineers share their tech knowledge and experience.

06/20/2012

PHP is a great language that is powerful enough to build a rock-solid, enterprise-class, real world website.
C++ is a great language that let's you express with style and rigor high performance and possibly low-level piece of software.

At Yakaz, we've brought those two worlds together, and this post is just about it.
We'll first present the process of creating a C extension to PHP, then adapt it to C++ cleanly and neatly, before packaging it for Debian.

05/12/2011

Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content web applications. Two separate modes of operations are supported:

Standalone mode where Yaws runs as a regular webserver daemon. This is the default mode.

Embedded mode where Yaws runs as an embedded webserver in another Erlang application.

Yaws is entirely written in Erlang, and furthermore it is a multithreaded webserver where one Erlang lightweight process is used to handle each client.

The main advantages of Yaws compared to other Web technologies are performance and elegance. The performance comes from the underlying Erlang system and its ability to handle concurrent processes in an efficient way. Its elegance comes from Erlang as well. Web applications don't have to be written in ugly ad hoc languages.

Some benchmarks later, we decided to use it for the Yakaz website, as a replacement of Apache, precisely for these reasons (and because we have some skills in Erlang).

After 7 months in production, it proves that it scales very well and that it is
a very stable server. But to meet all our needs, we had to patch it to add some missing features and to fix some bugs or unexpected behaviours.

You can find on github our fork of Yaws with all our updates. Feel free to get it, feedbacks are welcome.
To have more information on our patches, see the branches overview.

UPDATE (05-May-2011): All our modifications was integrated into Yaws-1.90. Thanks to Steve Vinoski and Claes Wikstrom.