Home  >  Article  >  Backend Development  >  Several practical functions of PHP

Several practical functions of PHP

墨辰丷
墨辰丷Original
2018-06-07 10:47:151630browse

This article mainly introduces several practical functions of PHP. Interested friends can refer to it. I hope it will be helpful to everyone.

1. Any number of parameters for PHP functions

You may know that PHP allows you to define a function with default parameters. But you may not know that PHP also allows you to define a function with completely arbitrary parameters
Here is an example to show you a function with default parameters:

// 两个默认参数的函数
function foo($arg1 = '', $arg2 = '') {
echo "arg1: $arg1\n";
echo "arg2: $arg2\n";
}
foo('hello','world');
/* 输出:
arg1: hello
arg2: world
*/
foo();
/* 输出:
arg1:
arg2:
*/

Now let’s take a look at an indefinite parameter function, which uses the func_get_args() method:

// 是的,形参列表为空
function foo() {
// 取得所有的传入参数的数组
$args = func_get_args();
foreach ($args as $k => $v) {
echo "arg".($k+1).": $v\n";
}
}
foo();
/* 什么也不会输出 */
foo('hello');
/* 输出
arg1: hello
*/
foo('hello', 'world', 'again');
/* 输出
arg1: hello
arg2: world
arg3: again
*/

2. Glob() Find files There are many PHP functions that have a relatively long self-explanatory function name, but, When you see glob(), you probably don't know what this function does unless you are already familiar with it.
You can think of this function as scandir(), which can be used to find files.

// 取得所有的后缀为PHP的文件
$files = glob('*.php');
print_r($files);
/* 输出:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/

You can also search for multiple suffixes

// 取PHP文件和TXT文件
$files = glob('*.{php,txt}', GLOB_BRACE);
print_r($files);
/* 输出:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
[5] => test.txt
)
*/


You can also add the path:

$files = glob('../images/a*.jpg');
print_r($files);
/* 输出:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/

If you want to get the absolute path, you can call ?realpath () Function:

$files = glob('../images/a*.jpg');
// applies the function to each array element
$files = array_map('realpath',$files);
print_r($files);
/* output looks like:
Array
(
[0] => C:\wamp\www\images\apple.jpg
[1] => C:\wamp\www\images\art.jpg
)
*/

3. View memory usageObserving the memory usage of your program allows you to better optimize your code.
PHP has a garbage collection mechanism and a very complex memory management mechanism. You can find out how much memory your script is using. To know the current memory usage, you can use the memory_get_usage() function. If you want to know the peak memory usage, you can call the memory_get_peak_usage() function.

echo "Initial: ".memory_get_usage()." bytes \n";
/* 输出
Initial: 361400 bytes
*/
// 使用内存
for ($i = 0; $i < 100000; $i++) {
$array []= md5($i);
}
// 删除一半的内存
for ($i = 0; $i < 100000; $i++) {
unset($array[$i]);
}
echo "Final: ".memory_get_usage()." bytes \n";
/* prints
Final: 885912 bytes
*/
echo "Peak: ".memory_get_peak_usage()." bytes \n";
/* 输出峰值
Peak: 13687072 bytes
*/

4. Check the CPU usage
Use the ?getrusage() function to let you know the CPU usage. Note that this feature is not available under Windows.

print_r(getrusage());
/* 输出
Array
(
[ru_oublock] => 0
[ru_inblock] => 0
[ru_msgsnd] => 2
[ru_msgrcv] => 3
[ru_maxrss] => 12692
[ru_ixrss] => 764
[ru_idrss] => 3864
[ru_minflt] => 94
[ru_majflt] => 0
[ru_nsignals] => 1
[ru_nvcsw] => 67
[ru_nivcsw] => 4
[ru_nswap] => 0
[ru_utime.tv_usec] => 0
[ru_utime.tv_sec] => 0
[ru_stime.tv_usec] => 6269
[ru_stime.tv_sec] => 0
)
*/

This structure seems very obscure, unless you know the CPU very well. Here are some explanations:

ru_oublock: block output operation
ru_inblock: block input operation
ru_msgsnd: sent message
ru_msgrcv: received message
ru_maxrss: maximum resident Retention set size
ru_ixrss: Total shared memory size
ru_idrss: Total non-shared memory size
ru_minflt: Page recycling
ru_majflt: Page invalidation
ru_nsignals: Received signals
ru_nvcsw: Active context switching
ru_nivcsw: Passive context switching
ru_nswap: Swap area
ru_utime.tv_usec: User mode time (microseconds)
ru_utime.tv_sec: User mode time (seconds)
ru_stime.tv_usec : System kernel time (microseconds)
ru_stime.tv_sec: System kernel time?(seconds)

Summary: The above is the entire content of this article, I hope it can help Everyone’s learning helps.

Related recommendations:

Usage of PHP command space namespace and use (example)

register_shutdown_function in PHP Function introduction and usage (case)

Different usage of header in php (case)

The above is the detailed content of Several practical functions of PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn