9 개의 PHP 가 유용 한 기능 (2)
4. CPU 사용 정보
사용 하 다getrusage() 함 수 는 CPU 의 사용 상황 을 알 수 있 습 니 다.이 기능 은 윈도 에서 사용 할 수 없습니다.
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
)
*/
이 구 조 는 CPU 에 대해 잘 알 지 않 는 한 매우 난해 하 다.다음 설명:
스 크 립 트 가 얼마나 많은 CPU 를 소 모 했 는 지 보 려 면 '사용자 상태의 시간' 과 '시스템 커 널 시간' 의 값 을 봐 야 합 니 다.초 와 초 부분 은 각각 제 공 됩 니 다. 초 값 을 100 만 으로 나 누고 초 값 에 추가 하면 소수 부분의 초 수 를 얻 을 수 있 습 니 다.
// 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);
/*
User time: 0.011552
System time: 0
*/
sleep 는 시스템 시간 을 차지 하지 않 습 니 다. 다음 의 예 를 볼 수 있 습 니 다.
// 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);
/*
User time: 1.424592
System time: 0.004204
*/
시스템 호출 이 없 기 때문에 약 14 초 동안 CPU 시간 이 걸 렸 습 니 다.
시스템 시간 은 CPU 가 시스템 호출 에 사용 하 는 커 널 명령 을 실행 하 는 시간 이다.다음은 하나의 예 이다.
$start = microtime(true);
// keep calling microtime for about 3 seconds
while(microtime(true) - $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
*/
우 리 는 위의 이 예 가 CPU 를 더 소모 하 는 것 을 볼 수 있다.
5. 시스템 상수
PHP 는 매우 유용 한 시스템 상수 을 제공 하여 현재 줄 번호 ( LINE), 파일 ( FILE), 디 렉 터 리 ( DIR), 함수 명 ( FUNCTION), 유형 명 ( CLASS), 방법 명 ( METHOD) 과 이름 공간 ( NAMESPACE) 을 얻 을 수 있 습 니 다. C 언어 와 비슷 합 니 다.
우 리 는 이 물건 들 이 주로 디 버 깅 에 사용 된다 고 생각 할 수 있 습 니 다. 예 를 들 어 우리 가 include 다른 파일 을 사용 할 때 사용 할 수 있 습 니까?FILE__ (물론 PHP 5.3 이후 에 도 DIR 를 사용 할 수 있 습 니 다.) 다음은 예 입 니 다.
// 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');
다음은 사용LINE__ 디버그 에 도움 이 되 는 debug 정 보 를 출력 합 니 다.
// some code
// ...
my_debug("some debug message", __LINE__);
/*
Line 4: some debug message
*/
// some more code
// ...
my_debug("another debug message", __LINE__);
/*
Line 11: another debug message
*/
function my_debug($msg, $line) {
echo "Line $line: $msg
";
}
6. 유일한 ID 생 성
많은 사람들 이 md5 () 를 사용 하여 유일한 ID 를 만 듭 니 다. 다음 과 같 습 니 다.
// generate unique string
echo md5(time() . mt_rand(1,1000000));
사실 PHP 중 에 하 나 는?uniqid() 의 함 수 는 이것 을 전문 적 으로 하 는 것 이다.
// generate unique string
echo uniqid();
/*
4bd67c947233e
*/
// generate another unique string
echo uniqid();
/*
4bd67c9472340
*/
생 성 된 ID 의 앞 자리 가 똑 같다 는 것 을 알 게 될 것 입 니 다. 이것 은 생 성기 가 시스템 에 의존 하 는 시간 이기 때 문 입 니 다. 이것 은 사실 매우 좋 은 기능 입 니 다. 왜냐하면 당신 은 이 ID 들 을 정렬 하기 쉽 기 때 문 입 니 다.이 MD5 는 할 수 없습니다.
이름 을 바 꾸 지 않도록 접 두 사 를 붙 일 수 있 습 니 다.
//
echo uniqid('foo_');
/*
foo_4bd67d6cd8b8f
*/
//
echo uniqid('',true);
/*
4bd67d6cd8b926.12135106
*/
//
echo uniqid('bar_',true);
/*
bar_4bd67da367b650.43684647
*/
그리고 생 성 된 ID 가 MD5 보다 짧 아 져 많은 공간 을 절약 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.