PHP¿ª¢µÄ³ÌÐoÔ±Ó¦¸ÃÇa³þ£¬PHPÖÐÓкܶaÄÚÖõŦÄÜ£¬ÕÆÎÕÁËËuÃÇ£¬¿ÉÒÔ°iÖuÄaÔÚ×oPHP¿ª¢Ê±¸u¼ÓµÃÐÄÓ¦ÊÖ£¬±¾ÎĽ«ÖÏi8¸o¿ª¢±Ø±¸µÄPHP¹¦ÄÜ£¬¸o¸o¶¼Ç³£ÊµÓã¬Ï£Íu¸÷λPHP¿ª¢ÕßÄܹ»ÕÆÎÕ¡£
1¡¢´«µÝÈÎÒaÊýÁ¿µÄº¯Êý²ÎÊý
ÎÒÃÇÔÚ.NET»oÕßJAVA±a³ÌÖУ¬Ò»°aº¯Êý²ÎÊý¸oÊý¶¼Êǹ̶¨µÄ£¬µ«ÊÇPHPÔÊÐiÄaʹÓÃÈÎÒa¸oÊýµÄ²ÎÊý¡£ÏÂÃaeÕa¸oʾÀýÏoÄaչʾÁËPHPº¯ÊýµÄĬÈϲÎÊý£º
// Á½¸oĬÈϲÎÊýµÄº¯Êý
function foo($arg1 = ¡±, $arg2 = ¡±) {
echo ¡°arg1: $arg1\n¡±;
echo ¡°arg2: $arg2\n¡±;
}
foo(¡®hello','world');
/* Êa³o:
arg1: hello
arg2: world
*/
foo();
/* Êa³o:
arg1:
arg2:
*/
ÏÂÃaeÕa¸oʾÀýÊÇPHPµÄ²»¶¨²ÎÊýÓ裬ÆaʹÓõ½ÁË func_get_args()½*¨£º
// Êǵģ¬ÐβÎÁбiΪ¿Õ
function foo() {
// È¡µÃËuÓеĴ«Èe²ÎÊýµÄÊý×e
$args = func_get_args();
foreach ($args as $k => $v) {
echo ¡°arg¡±.($k+1).¡±: $v\n¡±;
}
}
foo();
/* ʲôҲ²»»aÊa³o */
foo(¡®hello');
/* Êa³o
arg1: hello
*/
foo(¡®hello', ¡®world', ¡®again');
/* Êa³o
arg1: hello
arg2: world
arg3: again
*/
2¡¢Ê¹ÓÃglob()²eÕÒÎļþ
´o²¿ÖPHPº¯ÊýµÄº¯ÊýÃu´Ó×ÖÃaeÉ϶¼¿ÉÒÔÀi½aÆaÓÃ;£¬µ«Êǵ±Äa¿´µ½ glob() µÄʱºo£¬ÄaÒ²Ði²¢²»ÖªµÀÕaÊÇÓÃÀ´×oʲôµÄ£¬Æaʵglob()ºÍscandir() Ò»Ñu£¬¿ÉÒÔÓÃÀ´²eÕÒÎļþ£¬Çe¿´ÏÂÃaeµÄÓ裺
// È¡µÃËuÓеĺo׺ΪPHPµÄÎļþ
$files = glob(¡®*.php');
print_r($files);
/* Êa³o:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/
Äa»¹¿ÉÒÔ²eÕÒ¶aÖÖºo׺Ãu£º
// È¡PHPÎļþºÍTXTÎļþ
$files = glob(¡®*.{php,txt}', GLOB_BRACE);
print_r($files);
/* Êa³o:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
[5] => test.txt
13.
)
*/
Äa»¹¿ÉÒÔ¼ÓÉÏÂ*¾¶£º
$files = glob(¡®../images/a*.jpg');
print_r($files);
/* Êa³o:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/
Èç¹uÄaÏeµÃµ½¾ø¶ÔÂ*¾¶£¬Äa¿ÉÒÔµ÷Óà realpath() º¯Êý£º
$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¡¢»ñÈ¡ÄÚ´aeʹÓÃÇe¿oÐÅÏ¢
PHPµÄÄÚ´ae»ØÊÕ»uÖÆÒѾdz£Ç¿´o£¬ÄaÒ²¿ÉÒÔʹÓÃPHP½Å±¾»ñÈ¡µ±Ç°ÄÚ´aeµÄʹÓÃÇe¿o£¬µ÷ÓÃmemory_get_usage() º¯Êý»ñÈ¡µ±ÆÚÄÚ´aeʹÓÃÇe¿o£¬µ÷ÓÃmemory_get_peak_usage() º¯Êý»ñÈ¡ÄÚ´aeʹÓõÄaÖµ¡£²Î¿¼´uÂeÈçÏ£º
echo ¡°Initial: ¡°.memory_get_usage().¡± bytes \n¡±;
/* Êa³o
Initial: 361400 bytes
*/
// ʹÓÃÄÚ´ae
for ($i = 0; $i < 100000; $i++) {
$array []= md5($i);
}
// ɾ³ýÒ»°eµÄÄÚ´ae
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¡±;
/* Êa³o*aÖµ
Peak: 13687072 bytes
*/
4¡¢»ñÈ¡CPUʹÓÃÇe¿oÐÅÏ¢
»ñÈ¡ÁËÄÚ´aeʹÓÃÇe¿o£¬Ò²¿ÉÒÔʹÓÃPHPµÄ getrusage()»ñÈ¡CPUʹÓÃÇe¿o£¬¸Ã½¨ÔÚwindowsϲ»¿ÉÓá£
print_r(getrusage());
/* Êa³o
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
)
*/
Õa¸o½a¹¹¿´ÉϳoºÜ»Þɬ£¬³ý*ÇÄa¶ÔCPUºÜÁ˽a¡£ÏÂÃaeÒ»Ð(C)½aÊÍ£º
ru_oublock: ¿eÊa³o²Ù×÷
ru_inblock: ¿eÊaÈe²Ù×÷
ru_msgsnd: ¢Ë͵Ämessage
ru_msgrcv: ÊÕµ½µÄmessage
ru_maxrss: ×i´oפÁo¼¯´oС
ru_ixrss: È«²¿¹²ÏiÄÚ´ae´oС
ru_idrss:È«²¿Ç¹²ÏiÄÚ´ae´oС
ru_minflt: Ò³»ØÊÕ
ru_majflt: ҳʧЧ
ru_nsignals: ÊÕµ½µÄÐźÅ
ru_nvcsw: Ö÷¶¯ÉÏÏÂÎÄÇл»
ru_nivcsw: ±»¶¯ÉÏÏÂÎÄÇл»
ru_nswap: ½»»»Çø
ru_utime.tv_usec: Óû§Ì¬Ê±¼a (microseconds)
ru_utime.tv_sec: Óû§Ì¬Ê±¼a(seconds)
ru_stime.tv_usec: ϵͳÄÚºËʱ¼a (microseconds)
ru_stime.tv_sec: ϵͳÄÚºËʱ¼a?(seconds)
Òª¿´µ½ÄaµÄ½Å±¾ÏuºÄÁ˶aÉÙCPU£¬ÎÒÃÇÐeÒª¿´¿´¡°Óû§Ì¬µÄʱ¼a¡±ºÍ¡°ÏµÍ³ÄÚºËʱ¼a¡±µÄÖµ¡£ÃeºÍ΢Ãe²¿ÖÊÇÖ±ðÌa¹(C)µÄ£¬Äu¿ÉÒÔ°Ñ΢ÃeÖµ³ýÒÔ100Ío£¬²¢°ÑËuÌi¼Óµ½ÃeµÄÖµºo£¬¿ÉÒԵõ½ÓÐСÊý²¿*ÖµÄÃeÊý¡£
// sleep for 3 seconds (non-busy)
sleep(3);
$data = getrusage();
echo ¡°User time: ¡°.
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo ¡°System time: ¡°.
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* Êa³o
User time: 0.011552
System time: 0
*/
sleepÊDz»Õ¼ÓÃϵͳʱ¼aµÄ£¬ÎÒÃÇ¿ÉÒÔÀ´¿´ÏÂÃaeµÄÒ»¸oÀý×Ó£º
// loop 10 million times (busy)
for($i=0;$i<10000000;$i++) {
}
$data = getrusage();
echo ¡°User time: ¡°.
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo ¡°System time: ¡°.
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* Êa³o
User time: 1.424592
System time: 0.004204
*/
Õa»¨ÁË´oÔ¼14ÃeµÄCPUʱ¼a£¬¼¸ºoËuÓеĶ¼ÊÇÓû§µÄʱ¼a£¬ÒoΪûÓÐϵͳµ÷Óá£
ϵͳʱ¼aÊÇCPU»¨*ÑÔÚϵͳµ÷ÓÃÉϵÄÉÏÖ´ÐÐÄÚºËÖ¸ÁiµÄʱ¼a¡£ÏÂÃaeÊÇÒ»¸oÀý×Ó£º
$start = microtime(true);
// keep calling microtime for about 3 seconds
while(microtime(true) ¨C $start < 3) {
}
$data = getrusage();
echo ¡°User time: ¡°.
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo ¡°System time: ¡°.
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
/* prints
User time: 1.088171
System time: 1.675315
*/
ÎÒÃÇ¿ÉÒÔ¿´µ½ÉÏÃaeÕa¸oÀý×Ó¸uºÄCPU¡£
5¡¢»ñȡϵͳ³£Á¿
PHP Ìa¹(C)dz£ÓÐÓõÄϵͳ³£Á¿ ¿ÉÒÔÈÃÄaµÃµ½µ±Ç°µÄÐкŠ(LINE)£¬Îļþ (FILE)£¬Ä¿Â¼ (DIR)£¬º¯ÊýÃu (FUNCTION)£¬ÀaÃu(CLASS)£¬½*¨Ãu(METHOD) ºÍÃu×Ö¿Õ¼a (NAMESPACE)£¬ºÜÏñCÓiÑÔ¡£
ÎÒÃÇ¿ÉÒÔÒÔΪÕaÐ(C)¶«Î÷Ö÷ÒªÊÇÓÃÓÚµ÷ÊÔ£¬µ±Ò²²»Ò»¶¨£¬±ÈÈçÎÒÃÇ¿ÉÒÔÔÚincludeÆaËuÎļþµÄʱºoʹÓÃ?FILE (µ±È»£¬ÄaÒ²¿ÉÒÔÔÚ PHP 5.3ÒÔºoʹÓà DIR )£¬ÏÂÃaeÊÇÒ»¸oÀý×Ó¡£
// this is relative to the loaded script's path
// it may cause problems when running scripts from different directories
require_once(¡®config/database.php');
// this is always relative to this file's path
// no matter where it was included from
require_once(dirname(__FILE__) . ¡®/config/database.php');
ÏÂÃaeÊÇʹÓà LINE À´Êa³oÒ»Ð(C)debugµÄÐÅÏ¢£¬ÕaÑuÓÐÖuÓÚÄaµ÷ÊÔ³ÌÐo£º
// some code
// ¡
my_debug(¡°some debug message¡±, __LINE__);
/* Êa³o
Line 4: some debug message
*/
// some more code
// ¡
my_debug(¡°another debug message¡±, __LINE__);
/* Êa³o
Line 11: another debug message
*/
function my_debug($msg, $line) {
echo ¡°Line $line: $msg\n¡±;
}
6¡¢Éu³ÉΨһµÄid
ºÜ¶aÅoÓѶ¼ÀuÓÃmd5()À´Éu³ÉΨһµÄ±aºÅ£¬µ«ÊÇmd5()Óм¸¸oȱµa£º1¡¢ÎÞÐo£¬µ¼ÖÂÊý¾Ý¿aÖÐÅÅÐoÐÔÄÜϽµ¡£2¡¢Ì«³¤£¬ÐeÒª¸u¶aµÄ´ae´¢¿Õ¼a¡£ÆaʵPHPÖÐ×Ô´øÒ»¸oº¯ÊýÀ´Éu³ÉΨһµÄid£¬Õa¸oº¯Êý¾ÍÊÇuniqid()¡£ÏÂÃaeÊÇÓÃ*¨£º
// generate unique string
echo uniqid();
/* Êa³o
4bd67c947233e
*/
// generate another unique string
echo uniqid();
/* Êa³o
4bd67c9472340
*/
¸ÃËa¨ÊǸu¾ÝCPUʱ¼a´ÁÀ´Éu³ÉµÄ£¬ËuÒÔÔÚÏa½uµÄʱ¼a¶ÎÄÚ£¬idÇ°¼¸Î»ÊÇÒ»ÑuµÄ£¬ÕaÒ²½±aidµÄÅÅÐo£¬Èç¹uÄaÏe¸uºÃµÄ±ÜÃaÖظ´£¬¿ÉÒÔÔÚidÇ°¼ÓÉÏǰ׺£¬È磺
// ǰ׺
echo uniqid(¡®foo_');
/* Êa³o
foo_4bd67d6cd8b8f
*/
// Óиu¶aµÄiØ
echo uniqid(¡±,true);
/* Êa³o
4bd67d6cd8b926.12135106
*/
// ¶¼ÓÐ
echo uniqid(¡®bar_',true);
/* Êa³o
bar_4bd67da367b650.43684647
*/
7¡¢ÐoÁл¯
PHPÐoÁл¯¹¦ÄÜ´o¼Ò¿ÉÄÜÓõıȽ϶a£¬Ò²±È½Ï³£¼u£¬µ±ÄaÐeÒª°ÑÊý¾Ý´aeµ½Êý¾Ý¿a»oÕßÎļþÖÐÊÇ£¬Äa¿ÉÒÔÀuÓÃPHPÖеÄserialize() ºÍ unserialize()½¨À´ÊµÏÖÐoÁл¯ºÍ*´ÐoÁл¯£¬´uÂeÈçÏ£º
// Ò»¸o¸´ÔÓµÄÊý×e
$myvar = array(
¡®hello',
42,
array(1,'two'),
¡®apple'
);
// ÐoÁл¯
$string = serialize($myvar);
echo $string;
/* Êa³o
a:4:{i:0;s:5:¡±hello¡±;i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:¡±two¡±;}i:3;s:5:¡±apple¡±;}
*/
// *´ÐoÀý»¯
$newvar = unserialize($string);
print_r($newvar);
/* Êa³o
Array
(
[0] => hello
[1] => 42
[2] => Array
(
[0] => 1
[1] => two
)
[3] => apple
)
*/
ÈçºÎÐoÁл¯³Éjson¸ñʽÄØ£¬*ÅÐÄ£¬phpÒ²ÒѾΪÄa×oºÃÁË£¬Ê¹ÓÃphp 5.2ÒÔÉÏ°ae±¾µÄÓû§¿ÉÒÔʹÓÃjson_encode() ºÍ json_decode() º¯ÊýÀ´ÊµÏÖjson¸ñʽµÄÐoÁл¯£¬´uÂeÈçÏ£º
// a complex array
$myvar = array(
¡®hello',
42,
array(1,'two'),
¡®apple'
);
// convert to a string
$string = json_encode($myvar);
echo $string;
/* prints
["hello",42,[1,"two"],¡±apple¡±]
*/
// you can reproduce the original variable
$newvar = json_decode($string);
print_r($newvar);
/* prints
Array
(
[0] => hello
[1] => 42
[2] => Array
(
[0] => 1
[1] => two
)
[3] => apple
)
*/
*8¡¢×Öu´®Ñ¹Ëo
*µ±ÎÒÃÇ˵µ½Ñ¹Ëo£¬ÎÒÃÇ¿ÉÄÜ»aÏeµ½ÎļþѹËo£¬Æaʵ£¬×Öu´®Ò²ÊÇ¿ÉÒÔѹËoµÄ¡£PHPÌa¹(C)ÁË gzcompress() ºÍgzuncompress() º¯Êý£º
$string =
¡°Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. ¡°;
$compressed = gzcompress($string);
echo ¡°Original size: ¡°. strlen($string).¡±\n¡±;
/* Êa³oÔʼ´oС
Original size: 800
*/
echo ¡°Compressed size: ¡°. strlen($compressed).¡±\n¡±;
/* Êa³oѹËoºoµÄ´oС
Compressed size: 418
*/
// ½aѹËo
$original = gzuncompress($compressed);
¼¸ºoÓÐ50% ѹËo±ÈÂÊ¡£Í¬Ê±£¬Äa»¹¿ÉÒÔʹÓà gzencode() ºÍ gzdecode() º¯ÊýÀ´Ñ¹Ëo£¬Ö»²»ÓÃÆaÓÃÁ˲»Í¬µÄѹËoËa¨¡£
ÒÔÉϾÍÊÇ8¸o¿ª¢±Ø±¸µÄPHP¹¦ÄÜ£¬ÊDz»ÊǶ¼ºÜʵÓÃÄØ£¿