PHP 성능 최적화에 대한 이론적 지식 설명

不言
풀어 주다: 2023-04-05 07:26:02
앞으로
2701명이 탐색했습니다.

이 기사는 PHP 성능 최적화에 대한 이론적 지식을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

어떤 상황에서 PHP 성능 문제가 발생합니까?

1 PHP 구문의 부적절한 사용
2 PHP 언어를 사용하면 잘 못하는 일을 할 수 없다
3 PHP 언어로 연결된 서비스가 강하지 않다
4 PHP 자체의 단점
5 나도 모르는 문제

성능 문제 분석

PHP 성능 문제는 전체 프로젝트 성능 문제의 50% 미만을 차지합니다.

성능 최적화 프로젝트는 PHP 최적화에만 국한되지 마세요

php 언어 수준 성능 최적화
                             성능 PHP 주변기기 문제 최적화
                                                                                                      스트레스 ache 소프트웨어에서 제공하는 테스트에는 Apache 서버 설치 시 스트레스 테스트 소프트웨어가 포함됩니다.

사용 방법은?

./ab -n1000 -c100 http://www.baidu.com/
-n 요청 수
-c 동시성 수

url 대상 스트레스 테스트 주소 PHP-스트레스 테스트 도구 사용법 시연

주로 각각에 집중 동시성 최대화

요청에 가능한 한 적은 시간이 소요됨

PHP 자체 기능을 더 많이 사용


최적화: 코드 작성을 줄이고 PHP 자체 기능을 더 많이 사용

성능 문제: 자체 코드 중복이 많고 가독성이 좋지 않음 좋음, 그리고 성능이 낮음

왜 성능이 낮나요?

PHP 코드는 기본 언어로 컴파일되고 파싱되어야 하며, 이 프로세스는 비용이 많이 듭니다.

좋은 방법:

더 많은 PHP 내장 변수 상수 함수 사용

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

php 코드 실행 프로세스

*.php ---스캐너---> - -Parser--->Opcodes---Exec--->Output

PHP 내장 함수 간 성능 테스트

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

상황 설명: php 내장 함수 사이에 여전히 속도 차이가 있습니다

좋은 제안: PHP 내장 함수의 시간 복잡도에 대해 자세히 알아보세요

PHP 내장 함수 간 성능 테스트의 코드 테스트

isset($arr[$i]); //平均50ms
array_key_exists($i,$arr);//平均85ms
로그인 후 복사
속도를 줄이세요 PHP 매직 함수 사용 상황 설명: PHP에서 제공하는 매직 함수의 성능이 낮습니다.

성능이 낮은 이유는 무엇입니까? PHP 프로그래머의 수고를 덜기 위해 PHP 언어는 많은 일을 해냈습니다

좋은 방법: 피하세요 PHP 마법 함수를 최대한 사용합니다


PHP는 오류 억제기를 비활성화합니다

@의 실제 논리

코드 시작과 끝 전후에 Opcode를 추가합니다. 오류는 무시합니다

php -dv|d.active=1 -dv|d.execute=0 at.php
로그인 후 복사

그냥 확인하고 싶은 것이지 별로 원하지 않는 것입니다 실행

PHP-합리적인 메모리 및 정규식 사용

최적화 포인트 : 메모리를 합리적으로 사용

PHP에는 메모리 재활용 메커니즘이 보장되어 있지만 메모리도 신중하게 사용하시기 바랍니다

좋은 조언


unset( ) 사용하지 않는 메모리를 제때에 해제하려면 (참고: unset()은 로그아웃하지 못할 수도 있습니다)
정규 표현식을 가능한 한 적게 사용하세요정규 표현식에는 역추적 오버헤드가 큽니다.

좋은 조언:

문자열을 사용하세요 동일한 로직을 구현하는 함수 처리

PHP - 루프 내에서 작업을 피하세요

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

상황 설명:

루프 내 계산식이 반복적으로 계산됩니다

코드 예:

<?php
$str = "hello world";
for($i=0;$i<strlen($str);$i++)
{
    //do something
}
로그인 후 복사

PHP - 계산 집약적인 업무를 줄입니다

PHP는 계산 집약적인 시나리오에는 적합하지 않습니다

PHP 언어 특성상 PHP는 대용량 데이터 계산에 적합하지 않습니다

PHP는 시나리오에 적합합니다

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

PHP - 따옴표 붙은 문자열을 키 값으로 사용하세요. ​

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

엄밀히 말하면 인용된 문자열을 키 값으로 사용

PHP 관련 문제 분석 및 설명

PHP의 주변 장치는 무엇입니까?

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

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

파일 작업 감소

일반적인 PHP 시나리오의 오버헤드 순서:디스크 읽기 및 쓰기 읽기 및 쓰기 데이터베이스 읽기 및 쓰기 메모리 읽기 네트워크 데이터 쓰기

메모리 읽기 및 쓰기 < 불확실한 요인

2 네트워크 안정성

네트워크 요청 최적화

1 시간 초과 시간 설정

연결 시간 초과 200ms

읽기 시간 초과 800ms

쓰기 시간 초과 500ms

2 직렬 요청 병렬화

1 cur_multi_*()

2 swoole 확장 사용

curl_multi_*()不是很好,因为他是按最长的一个返回的时间来定的
curl_multi_add_handle 向curl批处理会话中添加单独的curl句柄
curl_multi_close 关闭一组cURL句柄
curl_multi_exec 运行当前cURL句柄的子连接
curl_multi_getcontent 如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流
curl_multi_info_read 获取当前解析的cURL的相关传输信息
curl_multi_remove_handle 移除curl批量处理句柄资源中的某个句柄资源
curl_multi_select 等待所有cURL批处理中的活动连接
curl_multi_setopt Set an option for the cURL multi handle
curl_multi_strerror - Return string describing error code
로그인 후 복사
추천하는 swoole 확장

PHP 출력 압축의 장단점

PHP 인터페이스의 출력 압축

압축하는 방법?

그냥 Gzip을 사용하세요

장점 데이터 출력에 좋고 클라이언트가 데이터를 더 빠르게 얻을 수 있습니다
단점 추가 CPU 오버헤드

#🎜🎜 #PHP 캐시 재사용

어떤 상황에서 출력 콘텐츠를 캐시해야 하나요?

여러 요청, 콘텐츠는 변경되지 않음

스마트한 조정 및 겹치는 기간 아이디어

스마트한 캐싱 켜기

#🎜🎜 # 겹치는 시간 창 아이디어

Serial:

Process1 Process2 Process3 Process4

겹치는 시간 창:

process1# 🎜🎜 #process2

process3

process4

후자의 작업이 이전 작업에 크게 의존하지 않는 경우 겹치는 시간을 사용할 수 있습니다

PHP 우회 처리 솔루션

일반적으로 말하면: x.php -> Process1 ->process2 ->process3 -> 🎜🎜#우회 솔루션: x.php -> Process1 ->process2(동시) ->Process3(동시) -->Process4->

위 내용은 PHP 성능 최적화에 대한 이론적 지식 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿