>백엔드 개발 >PHP 튜토리얼 >PHP 성능 문제 분석 + 최적화

PHP 성능 문제 분석 + 최적화

little bottle
little bottle앞으로
2019-04-19 18:03:572468검색

이 기사는 PHP 성능 문제 분석 + 최적화에 관한 것입니다. 관심 있는 친구들이 와서 더 자세히 알아볼 수 있습니다!

어떤 상황에서 PHP 성능 문제가 발생합니까?
1 PHP 구문을 잘못 사용함
2 PHP 언어를 사용하여 잘 못하는 일은 할 수 없음
3 PHP 언어로 연결된 서비스가 작동하지 않음 good#🎜 🎜# PHP 자체의 단점 4가지
나도 모르는 문제점 5가지
PHP 성능 문제가 전체 프로젝트 성능 문제의 50% 미만을 차지함

성능 최적화 프로젝트는 PHP 최적화에만 국한되어서는 안 됩니다 PHP 언어 수준 성능 최적화 🎜#                                                                                , 최적화


#🎜🎜 #PHP 스트레스 테스트 도구 ab 소개



Apache Benchmark(ab)(직접 다운로드할 수 있음)
ab는 Apache에서 제공하는 스트레스 테스트 소프트웨어입니다. 이 스트레스 테스트 소프트웨어는 Apache 서버를 설치할 때 포함됩니다.


사용방법은?

./ab -n1000 -c100 http://www.baidu.com/

  -n 요청 수

                             > URL 목표 압력 압력 주소#🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜
PHP 압력 테스트 도구 사용 데모 ## 🎜🎜 ## 🎜🎜 # 주로 초점 초당 가능한 한 많은 동시성 요청에 가능한 한 적은 시간이 걸립니다.

PHP 자체 기능을 더 많이 사용

최적화: 적게 작성 코드를 작성하고 PHP 자체 기능을 더 많이 사용하세요

성능 문제: 코드 자체가 중복되고 가독성이 낮으며 성능이 낮습니다

심지어 성능이 낮나요?
PHP 코드는 기본 언어로 컴파일되고 파싱되어야 하며 이 프로세스는 각 요청에 대해 처리되므로 비용이 많이 듭니다.

좋은 방법:
PHP에 내장된 변수 상수 함수 활용 더보기

PHP 자체 능력 성능 테스트를 위한 코드 준비

#🎜 🎜 #php 코드 실행 프로세스
*.php ---스캐너---> Exprs -----파서--->Opcodes---Exec--- > ;출력


PHP 내장 함수 간 성능 테스트



최적화 포인트: php 내장 함수의 성능 장점과 단점

상황 설명: PHP 내장 함수에는 여전히 블록 속도 차이가 있습니다
좋은 제안: PHP 내장 함수의 시간 복잡도에 대해 자세히 알아보세요.


PHP 내장 함수 간 성능 테스트를 위한 코드 테스트



isset($arr[$i]); //평균 50ms
array_key_exists($i,$arr);//평균 85ms


PHP 매직 함수 사용 줄이기

상황 설명: 매직 함수 제공 PHP, 성능이 좋지 않습니다
성능이 낮은 이유는 무엇입니까? PHP 프로그래머의 수고를 덜기 위해 PHP 언어는 많은 일을 해왔습니다

좋은 방법 PHP 마법 기능을 최대한 사용하지 마십시오




PHP 오류 억제 기능을 비활성화합니다

@실제 논리

                                                                                           ~                                                  메모리 및 정규식의 합리적인 사용을 통해



최적화 포인트: 메모리의 합리적인 사용

PHP에는 수익을 보장하는 메모리 재활용 메커니즘이 있지만 메모리도 함께 사용하십시오. 주의 깊게 좋은 제안 unset()을 사용하여 사용하지 않은 메모리를 제때에 해제하세요(참고: unset()는 로그아웃되지 않을 수 있습니다)

정규식을 가능한 한 적게 사용하세요

정규식에는 역추적 오버헤드가 큽니다 ,

좋은 조언:
동일한 논리를 달성하려면 문자열 처리 함수를 사용하세요


PHP - 루프에서 계산을 피하세요

최적화 포인트: 루프에서 계산을 피하세요

상황 설명:
루프의 계산 공식은 다음과 같습니다. 반복됨

코드 예:
$str = "hello world";
                                                                             | 시나리오에 적합합니다

웹 서버 및 지원 서비스 연결, UI 프리젠테이션에 적합


PHP - 따옴표로 묶인 문자열을 키로 사용해야 합니다. 값

  PHP는 따옴표가 없는 키 값을 상수로 처리하므로 상수를 찾는 오버헤드가 발생합니다

따옴표 붙은 문자열을 키 값으로 엄격하게 사용 ​​




PHP를 둘러싼 문제에 대한 분석 및 설명



PHP에는 다 있습니다 What?

Linux 운영 환경 php 하드 디스크(파일 저장소) 데이터베이스(예: mysql) 캐시 네트워크


PHP 주변 장치가 PHP 프로그램에 미치는 영향 분석



파일 형식 작업 감소

일반적인 PHP 시나리오의 오버헤드 순서:

                                                                                                               out out out out out out out out of out

네트워크 요청을 사용하여 함정:
1 상대방 인터페이스의 불확실한 요소 2 네트워크 안정성 네트워크 요청 최적화 1 시간 초과 기간 설정
연결 시간 초과 200ms
읽기 초과 시간 800ms
쓰기 시간 초과 500ms
2 직렬 요청 병렬화

1 cur_multi_*()
2 swoole 확장 사용

컬_멀티_*()는 가장 긴 반환 시간을 기반으로 하기 때문에 좋지 않습니다.

컬 일괄 세션에 컬_multi_add_handle 별도의 컬 핸들을
            컬_멀티_close는 cURL 핸들 그룹을 닫습니다
         현재 cURL 핸들의 연결
cur_multi_getcontent CURLOPT_RETURNTRANSFER가 설정된 경우 획득한 출력 텍스트 스트림을 반환합니다.
  cur_multi_info_read 현재 구문 분석된 cURL의 관련 전송 정보를 가져옵니다.
  cur_multi_remove_handle 컬 일괄 처리 핸들 리소스에서 핸들 리소스를 제거합니다.
    Curl_multi_select URL 일괄 처리 연결에서 모든 c 활동을 기다립니다.
           컬_멀티_세톱트 cURL 다중 핸들에 대한 옵션 설정
        cur_multi_strerror - 오류 코드를 설명하는 문자열 반환


                          off swoole의 swoole 확장 프로그램


-권장 사항

PHP 인터페이스의 출력을 압축합니다.
압축하는 방법은 무엇입니까?可 데이터 출력을 용이하게 하기 위해 GZIP을 사용합니다.
추가 CPU 오버헤드 추가

Php 캐시

출력 콘텐츠 캐시의 경우?不 다중 요청, 콘텐츠 상수 상황


똑똑한 조정 및 겹치는 시간 창 생각

똑똑한 열기 캐싱

겹치는 시간 창 생각

serial:
Process1 Process2 Process3 Process4

겹치는 시간 창:

processe1 S PROCESS2r Process3
Process4

작업이 이전 작업에 대한 의존도가 높지 않은 경우 중첩 시간을 사용할 수 있습니다.




Php 처리 방식



일반적으로 일반: x.php -& gt;process1- >process2 -> process3 -> process4-> 우회 방식: x.php -> Process1 ->process2(동시) ->Process3(동시) -->Process4-> 추천 튜토리얼:
PHP 비디오 튜토리얼


위 내용은 PHP 성능 문제 분석 + 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제