Thursday, July 3, 2008

Ways To Optimize PHP Codes

Be wary of garbage collection, part 2

http://www.hudzilla.org/php/18_1_11.php

Tuesday, July 1, 2008

Running PHP Script From Command Line

Control your scripts with command-line PHP

PHP is generally used with the web Server but there are ways we can also run php scripts from command line. PHP distribution also includes a command-line interface which can be used to run PHP programs at the command prompt, much like Perl or bash.

Executable

All PHP distributions, whether compiled from source or pre-built, include a PHP executable by default. This executable can be used to run command-line PHP programs.

To locate this executable on your system, use the following guidelines:

  • On Windows, it will be stored in your main PHP installation folder as php.exe or (in older PHP versions) php-cli.exe.
  • On Linux, it will be stored in the bin/ sub-directory of your PHP installation directory.


In either case, you can test it to ensure that it works, by calling it with the -v option:


shell> /path/to/php -v

PHP 5.0.0 (cli) (built: Jun 1 2005 18:32:10)

Copyright (c) 1997-2004 The PHP Group

Zend Engine v2.0.0, Copyright (c) 1998-2004 Zend Technologies

This should return the PHP version number.

A simple PHP CLI program

Once you've located the CLI executable, try it out with a simple program. Create a text file containing the following PHP code, and save it as hello.php:

echo "Hello from the CLI";

?>

Now, try running this program at the command prompt, by invoking the CLI executable and passing it the name of the script to run:

shell> /path/to/phphello.php

Hello from the CLI

Using standard input and output

The PHP CLI defines three constants, to make it easier to interact with the interpreter at the command prompt. These are shown in Table A.

Table A


Constant Description
STDIN The standard input device
STDOUT The standard output device
STDERR The standard error device


You can use these constants within your PHP script to accept user input, or display the results of processing and calculation. To understand this better, consider the following script: (Listing A)

Listing A

// ask for input

fwrite(STDOUT, "Enter your name: ");
// get input

$name = trim(fgets(STDIN));
// write input back

fwrite(STDOUT, "Hello, $name!");

?>

Look what happens when you run it:

shell> /path/to/phphello.php

Enter your name: Joe

Hello, Joe!

In this script, the fwrite() function first writes a message to the standard output device asking for the user's name. The user's input is then read into a PHP variable from the standard input device, and incorporated into a string. This string is then printed back to the standard output device with fwrite().

Using command-line arguments

It's common to pass programs options on the command line to modify their behavior. You can do this with your CLI programs as well. The PHP CLI comes with two special variables designed specifically for this purpose: the $argv array, which stores the options passed to the PHP script on the command line as individual array elements, and the $argc variable, which stores the number of elements in the $argv array.

It's simple to write code within your PHP script to read $argv and process the options it contains. Try the illustrative script in Listing B to see how it works:

Listing B

print_r($argv);

?>

Run this script by passing it some arbitrary values, and check the output:

shell> /path/to/phptest.php chocolate 276 "killer tie, dude!"

Array(

[0] => test.php

[1] => chocolate

[2] => 276

[3] => killer tie, dude!

)

As you can see from the output, the values passed to test.php automatically appear in $argv as array elements. Notice that the first argument to $argvis always the name of the script itself.

Here's another, more advanced example: (Listing C)

Listing C

// check for all required arguments

// first argument is always name of script!

if ($argc != 4) {

die("Usage: book.php \n");

}
// remove first argument

array_shift($argv);
// get and use remaining arguments

$checkin = $argv[0];

$nights = $argv[1];

$type = $argv[2];

echo "You have requested a $type room for $nights nights, checking in on $checkin. Thank you for your order!\n";

?>

Here's an example of its usage:

shell> /path/to/phpbook.php 21/05/2005 7 single
You have requested a single room for 7 nights, checking in on 21/05/2005. Thank you for your order!

Here, the script first checks the $argc to ensure that the required number of arguments are present. It then extracts each argument from $argv and prints them back out to the standard output device.

Note: You can add more sophisticated command-line option parsing to PHP with theConsole_Getopt PEAR class.

Using CLI options

In addition to passing your PHP script options on the command line, you can also pass the PHP CLI options to alter its behavior. Table B contains a list of the important ones:

Table B


Option Description
-a Run interactively
-c path Read php.ini file from path
-n Run without reading php.ini
-m List compiled modules
-i Display information about the PHP build
-l Syntax-check a PHP script
-s Display color-coded source
-w Display source code after stripping comments
-h Display help

Interactive use

You can also use the PHP CLI interactively, typing in commands and receiving an immediate response. To see this in action, invoke the CLI executable without any options, as below:

shell> /path/to/php -a

You will be presented with a blank line, at which you can type in PHP code. Take a look:

shell> /path/to/php -a

Interactive mode enabled

echo mktime();
1121187283
echo 2+2;
4
exit();
shell>

Alternatively, you can invoke the CLI without the -a parameter, and type in a complete script or code block. Use -D to end the code block and have the CLI execute it. Here's an example:

shell> /path/to/php

echo date("d-M-Y h:i:s", time());

?>

02-Sep-2008 14:54:04

And that's about it! You should now know enough about the PHP CLI to begin using it yourself. Have fun, and happy coding!

Source

http://articles.techrepublic.com.com/5100-10878_11-5889263.html