Linux Ask!

Linux Ask! is a Q & A web site specific for Linux related questions. Questions are collected, answered and audited by experienced Linux users.

Jun 022010
 

Disable APC auto recompile modified PHP files

Answer:

If you want extra performance boost for PHP/APC, you can tell APC not to auto recompile modified PHP files even they have changed. This can save APC for not to check the modification time of your script on every request.

To do so, edit your php.ini, and add

apc.apc.stat = 0

Restart your web server (e.g. Apache) to take effect.

Apr 292010
 

Strict comparison in PHP

Answer:

PHP has two ways to compare two variables, type-safe and type-less, e.g.

Type-safe

print ( "123" === "123" ); // print 1
print ( 123 === 123 ); // print 1
print ( 123 === "123" ); // print nothing

Type-less

print ( "123" == "123" ); // print 1
print ( 123 == 123 ); // print 1
print ( 123 == "123" ); // print 1

Reference: http://php.net/manual/en/language.operators.comparison.php

Apr 282010
 

Floating point precision in PHP

Answer:

It is typical that simple decimal fractions like 0.1 or 0.7 cannot be converted into their internal binary counterparts without a small loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8, since the internal representation will be something like 7.9.

E.g.

$a = 0.1;
$b = 0.7;

print $a + $b;
print (( $a + $b ) * 10);

Reference: http://www.php.net/manual/en/language.types.float.php

So, never compare two floating numbers in your program.

Apr 262010
 

Faster string length testing in PHP

Answer:

If you want to ensure a string variable has a particular length, you might use strlen


if ( strlen($str) > 10 ) {
    // ...
}

A faster approach is to use isset


if ( isset($str[10]) ) {
    // ...
}