PHP

Collect MySQL Size in Zabbix on Ubuntu 12.04 LTS

Posted on

If you have a lot of such entries

sh: 1: [[: not found
sh: 1: : Permission denied

in your zabbix_agentd.log and you are on Ubuntu 12.04 LTS then you have the dash shell as /bin/sh DashAsBinSh

I have used the following setup to solve this issue.

vi /etc/zabbix/mysql_size.sh

#!/bin/bash

echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema='$1'")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name='$2'");" | HOME=/var/lib/zabbix mysql -N

chmod 755 /etc/zabbix/mysql_size.sh

and changed the original line in

userparameter_mysql.conf

to
UserParameter=mysql.size[*],/etc/zabbix/mysql_size.sh $1 $2 $3

Advertisements

FPM in php 5.3.3

Posted on Updated on

The FastCGI Process Manager (FPM) is now part of the official php 5.3 branch.

http://www.php.net/archive/2010.php#id2010-07-22-2

The  official site in the php manual can be found here

The official site for the php-fpm project is here

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/