이 기사의 예에서는 ltrace 도구를 사용하여 PHP 라이브러리 함수 호출을 추적하는 방법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
아마도 여러분은 이미 strace를 사용하여 시스템 호출을 추적하는 데 익숙할 것입니다. 오늘은 라이브러리 기능 추적을 위한 강력한 도구인 ltrace를 소개합니다.
예를 들어 다음과 같은 PHP 코드가 있습니다
test.php:
<?php $y = '1380'; $arr = array(); for($i = 0; $i < 2000; $i ++){ $arr[] = "{$i}"; //故意用引号包起来设成字符串 } for($i = 0; $i < 2000; $i ++){ if(!in_array($y, $arr)) continue; } ?>
ltrace -c /usr/local/php/bin/php test.php(-c는 요약을 의미함)
다음 출력이 표시됩니다.
% time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 95.02 7.417240 368 20146 strtol 2.15 7.160390 413 17316 memcpy 1.63 5.522641 240 22966 free 0.67 2.275374 2275374 1 curl_global_cleanup 0.54 2.235466 617 3618 __ctype_tolower_loc 0.16 2.123547 1194 1778 strrchr 0.17 1.532224 67 22836 malloc 0.29 0.382083 67 5678 strlen
strtol이 실행 시간의 거의 95.02%를 차지하고 병목 현상이 발견되는 것을 볼 수 있습니다. 그리고 PHP는 in_array() 테스트 중에 문자열 번호를 long으로 변환하려고 시도하는데 시간이 많이 걸립니다. 따라서 모든 문자열을 정수로 변환하면 효율성이 크게 향상될 수 있습니다.
ltrace는 정말 좋은 도구입니다
이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.