PHP

Which language for Webdevelopment php python perl ruby or java

Posted on

I have searching for a long time for the right webframewor to develop a rather small Webapplication.
The requirement was:

  1. Usermanagmemtn, ACL
  2. Manage Files to download by Userpermission
  3. run behind nginx

I have developed in all of this languages in the past, some of them in mor deep then in the other.

I have take a look about different frameworks in this languages

  1. Perl
  2. Python
  3. PHP
  4. Ruby
  5. Java

The main decision to go to the php based symfony framework was:

  1. It is easy to learn and relativly good documented
  2. php-fm
  3. I know php more or less good, not better then perl but the setup was easier to create.
  4. There are more php known persons in the current company.

My reasons why I have not choose one of the differnt languages to work:

  1. Java: due the fact that you need to compile it, so you need a IDE (ala. Eclipse). It takes more time to see if you change works.
  2. ruby & python: I haven’t not enough experience with it. This language looks very nice and easy to learn but it wasn’t necessary that I learn it, yet 😉
  3. perl: I have develop a lot of perl modules and code in the past but for now I like php more.

So as you can see it is not very academic more pragamtic ;-).

High performance PHP

Posted on Updated on

If you have the need to run php with a very high traffic you should think about the follwoing setup.

Don’t think it will work in 5 minutes and you don’t need some knowledge about how to setup an webserver and a php application, you definitely need it.

If you think this is a step by step description for people which only want to copy and past commands and it works then you are wrong here, please take a websearch engine for a alternative description.

What you need:

  1. nginx http://www.nginx.net/
  2. php-fm http://php-fpm.org/
  3. php http://www.php.net/
  4. a compile environment
  5. the development libraries for the wanted php features and libxml2
  6. A clear test scenario and target how many requests per second should be reached on static and dynamic part.

How you can build this environment:

  1. Extract, build and install nginx http://wiki.nginx.org/NginxGettingStarted
  2. Extract, build and install php-fm http://php-fpm.org/wiki/Documentation
  3. configure nginx for fast-cgi proxying http://wiki.nginx.org/NginxHttpFcgiModule

High Performance View

A brief description how the flow is:

  • A request comes to nginx
  • He takes a look into his config to find the right location or server config
  • If the static content rule matches then he will deliver the content directly from the disc
  • If the dynamic rule matches the he will contact php-fm, which manage the php-instances
  • php-fm execute the php script and send the dynamic content back to nginx
  • nginx sends the content back to the client

There are some pitfalls:

  1. client_body_buffer_size
  2. fastcgi_buffers*

You should take your time to find the right config setup for nginx and php-fm to be able to fulfill the assumed traffic.

I have started to translate the russian documentation, which is still not complete.

UPDATE: There is now a official wiki http://php-fpm.org/