> 백엔드 개발 > PHP 튜토리얼 > PHP 프로그램 최적화

PHP 프로그램 최적화

WBOY
풀어 주다: 2016-08-08 09:28:39
원래의
967명이 탐색했습니다.

PHP 프로그램 최적화

PHP 프로그램 최적화에는 많은 내용이 있습니다. 다음은 PHP 코드 최적화, 세션 메커니즘 최적화, 캐싱 미들웨어 사용 및 PHP 코드 캐싱 시스템(주로 APC 가속)에 중점을 둡니다.

PHP 코드 최적화

충분한 기술을 익힌 후에야 PHP 코드를 최적화할 수 있습니다. 프로그램 코딩 작업이 완료된 후 우리는 일반적으로 선임 프로그래머에게 코드 검토, 프로그램 품질 평가 및 최적화가 필요한 사항 식별을 요청합니다. 이 프로세스를 코드 검토라고도 합니다. 아래에서는 몇 가지 일반적인 PHP 프로그래밍 기술과 코드 검토 프로세스에 포함될 수 있는 몇 가지 최적화 원칙을 소개합니다.

1. 최신 PHP 버전으로 업그레이드

프로그래밍 언어 자체는 끊임없이 진화하고 있으며 새 버전의 언어에는 일반적으로 언어 자체에 버그 수정 및 성능 최적화가 포함되어 있다는 점을 알아야 합니다. 따라서 전문가로서 우리는 정기적으로 새 버전의 출현에 주의를 기울여야 합니다. PHP의 경우 공식 웹사이트 http://php.net/에서 필요한 정보를 얻을 수 있습니다.

2. 포함 및 요구 사항을 줄입니다

PHP 자체가 이 문제에 대해 특정 최적화를 수행했지만 과도하게 사용하면 성능 저하가 발생할 수 있습니다. APC 가속기 구성요소를 설치하면 이 프로세스를 완화할 수 있습니다.

3. 전역 변수 대신 지역 변수를 사용하세요

지역 변수는 가장 빠르며, 특히 일부 루프 논리에서는 지역 변수를 사용하여 최대한 많은 작업을 수행합니다. 글로벌 변수를 사용하지 않는 이유는 운영 효율성 문제 때문이기도 하고, 글로벌 변수 관리가 쉽지 않기 때문이기도 합니다.

4. 정적 함수나 메서드를 사용해 보세요

가능하면 함수나 메서드를 정적으로 정의해야 합니다. 즉, 정적 표시를 추가해야 합니다. 그래서 가능하게 되면 프로그램 실행 속도가 몇배로 빨라지게 됩니다.

5. 사용하지 않는 변수나 리소스를 해제하세요

PHP의 메모리 재활용 메커니즘에 너무 의존하지 마세요. 프로그램에서 일부 사용하지 않는 변수나 리소스를 해제해야 합니다. 적시 방식 해제하려면 unset 메소드를 사용하거나 직접 null로 설정할 수 있습니다. 또한 데이터베이스 연결과 같은 구성 요소와 관련된 다른 리소스가 발견되는 경우 특별한 주의를 기울여야 합니다.

6. 문자열을 포함하려면 큰따옴표 대신 작은따옴표를 사용하세요.

PHP에서는 큰따옴표를 사용하면 추가 작은따옴표가 발생할 수 있으므로 문자열은 일반적으로 작은따옴표를 사용하여 포함됩니다. 문자 이스케이프 또는 변수 구문 분석 논리와 관련하여 큰따옴표보다 더 효율적입니다.

7. @ 기호를 사용하여 오류를 차단하면 스크립트 실행 속도가 느려집니다.

일부 프로그래머는 편의상 @를 사용하여 오류 메시지를 차단하는 것을 좋아합니다. 하지만 이 접근 방식은 스크립트의 실행 속도를 저하시키므로 권장되지 않습니다.

8. PHP의 OOP를 남용하지 마세요

이제 더 큰 규모의 PHP 프로그램은 코드를 더 잘 관리하기 위해 객체지향적 사고(OOP)를 사용하는 경향이 있습니다. 그러나 프로그램 프레임워크는 일반적으로 객체가 더 많은 메모리를 차지하므로 클래스 라이브러리가 너무 많으면 포함 및 요구 작업이 많이 생성되어 추가 오버헤드가 발생할 수 있습니다. 그러므로 우리는 실제 상황에 따라 OOP 아이디어를 합리적으로 사용해야 합니다. 이 문제는 APC 가속 구성 요소를 사용하여 완화할 수도 있습니다.

9. 인터페이스 대신 추상 클래스를 사용하세요

PHP에서 인터페이스를 사용하는 데 드는 비용은 매우 높으므로 프로그래밍할 때 인터페이스를 사용하지 않도록 하세요. 유사한 논리 캡슐화를 위해 일반적으로 추상 클래스를 대신 사용할 수 있습니다.

10. 정규식을 사용하는 것은 비용이 많이 든다

PHP 언어의 정규식 기능은 매우 강력하지만 실행 비용도 높다는 것을 알아야 합니다. 가능하다면 대신 PHP의 문자 처리 기능을 사용해 보세요.

11. 저장해야 할 데이터는 최대한 압축한다

모든 데이터를 저장하려면 시스템의 공간 자원이 필요하므로 데이터를 압축해야 한다 가능한 한 압축을 수행하여 시스템 공간 자원을 절약하십시오. 예를 들어 IP 주소를 저장할 때 ip2long 함수를 사용하여 IP 주소를 정수 데이터로 변환하여 저장한 다음 long2ip 함수를 통해 복원할 수 있습니다. 또한 gzcompress 및 gzuncompress를 사용하여 일부 빅 데이터를 압축 및 압축 해제할 수도 있습니다.

12. 더 효율적인 문장을 사용하세요

PHP 프로그래밍 문장의 효율성도 다양합니다. 아래에서는 더 중요한 문장을 비교하고 나중에 작성해야 합니다. 코딩할 때 주의하세요.

  • 분기문에서 switch...case의 효율성이 if...elseif...else보다 높습니다.
  • 루프문에서 foreach의 효율성이 가장 높습니다. , for second, while이 가장 낮습니다
  • 오버레이 문에서 ++$i(접두사)를 쓰는 방법이 $i++(접미사)보다 빠릅니다

13. 보다 효율적인 함수 사용

PHP에는 매우 풍부한 함수 라이브러리가 있으며, 동일한 함수가 다른 함수를 사용하여 완성될 수 있습니다. 그러나 다양한 기능의 작동 효율성도 다릅니다. 아래에서는 일반적으로 사용되는 일부 기능을 비교해 보겠습니다.

  • 문자 인쇄 기능 echo가 print보다 빠릅니다
  • 문자 교체 기능 strtr이 가장 ​​효율적이고 str_replace가 두 번째로 prea_replace 정기 교체가 가장 낮습니다
  • 배열 쿼리 함수 array_key_exists가 가장 효율적입니다 Fast, inset 둘째, in_array가 가장 낮습니다
  • 원격 네트워크 파일 가져오기 cUrl이 가장 높은 효율성, 조작성 및 유연성을 가지며 fsockopen이 두 번째, file_get_contents 및 fopen이 가장 낮습니다.

로직이 그다지 복잡하지 않은 일부 프로그램의 경우 각 코드 최적화의 효과가 그다지 명확하지 않을 수 있지만 좋은 프로그램을 개발하는 것이 매우 중요합니다. 프로그래밍 습관은 일반 프로그래머나 시니어 프로그래머에게도 해당됩니다. 위 목록은 PHP 프로그래밍 기술의 전부는 아니며, 이러한 기술을 하루아침에 익힐 수는 없습니다. 소위 학습에는 한계가 없으며, 학습과 실습 과정에서 끊임없이 요약하고 축적해야만 프로그래밍 능력을 향상시킬 수 있습니다. 다음 층으로.

PHP 최적화 세션 메커니즘

쉽게 말하면 Session 이는 사용자가 서버에 저장해야 하는 정보를 저장하는 데 사용되는 각 사용자와 함께 제공되는 전역 변수와 같습니다. 실제로 세션 세션의 기능은 시스템 구성 파일 php.ini에서 설정할 수 있습니다. 물론 ini_set 함수(구성을 얻기 위한 ini_get)를 사용하여 프로그래밍 방식으로 설정할 수도 있습니다.

세션을 생성하려면 일반적으로 시스템 리소스만 소비해야 하므로 auto_start(session.auto_start: 자동 활성화 여부)를 활성화하지 않는 것이 좋습니다. 필요할 때 Session을 사용하십시오. 이 경우 session_start 함수를 사용하여 Session 함수를 엽니다. 둘째, Session의 유효기간은 시스템 상황에 따라 결정되어야 한다. 너무 길면 세션 데이터가 너무 많아 로드 문제가 발생할 수 있고, 너무 짧으면 세션을 너무 자주 생성하여 성능 문제가 발생할 수도 있습니다. 시스템의 기본 유효 시간은 1440초로, 실제 프로젝트에서는 일반적으로 이 시간을 1~8시간으로 설정합니다. 또한 PHP Session에서 사용하는 기본 저장 방식은 파일 저장 방식입니다. php.ini에서는 session.save_handle 선택 라인을 통해 필요한 저장 방식을 선택할 수 있습니다. 그러나 파일 저장 방식을 사용하는 것은 상대적으로 비효율적이며 실제로 시스템 아키텍처 확장에 도움이 되지 않습니다. 프로젝트에서 세션 콜백 인터페이스는 종종 세션의 논리를 제어하기 위해 session_set_save_handler 메소드를 통해 설정됩니다. 일반적인 저장 매체에는 데이터베이스, 분산 캐시 서버 등이 포함됩니다.

PHP 세션 최적화 아이디어. 우선, Session이 생성될 때마다 리소스 소모가 발생합니다. 전역 구성 파일에서 session_start 메소드를 당연하게 사용하지 마십시오. 둘째, 모든 세션 요청은 반드시 세션 ID를 가져와야 합니다. 서버가 세션 ID를 얻을 수 없으면 새 세션 ID를 생성하기 때문입니다. 또한, 저장 방식을 선택할 때 캐시 서버인 Memcache(d), Redis 등 빠른 저장 매체를 사용해 보세요.

캐싱 미들웨어 사용

캐싱 미들웨어 사용이 나타납니다. 쿼리된 정보를 서버 메모리에 캐시하여 대부분의 쿼리 요구 사항을 처리하는 데 데이터베이스를 교체함으로써 데이터에 대한 부담을 줄입니다. 현재 업계에서 가장 많이 사용되는 캐시 미들웨어는 Memcache와 Redis이다(환경 구성이나 사용법, 둘의 차이점은 네트워크 리소스를 검색해 보시기 바라며 여기서는 자세히 소개하지 않겠습니다). 실제 프로젝트에서 사용되는 효과에 따라 미들웨어 캐싱은 일반적으로 서버의 쿼리 속도를 크게 향상시킬 수 있습니다. 또한 Redis 캐시는 쓰기 대기열로도 사용할 수 있습니다. 즉, 데이터가 먼저 Redis 캐시에 기록된 다음 데이터로 전송됩니다.

APC를 사용하여 가속

네트워크 애플리케이션 지속적인 개발로 인해 로직 코드는 점점 더 복잡해지고 프레임워크에 거대한 클래스 라이브러리 코드를 도입하는 데 필요한 리소스 소비가 상대적으로 높기 때문에 다시 시작하면 됩니다. 또한 코드 실행 속도를 높이려면 일부 코드 수준 캐싱을 사용해야 합니다.

APC(Alternative PHP Cache, PHP 코드 캐싱 시스템)는 PHP 중간 코드(opcode)를 캐싱하고 최적화하여 매우 우수한 PHP 코드 캐싱 솔루션입니다. 실행 효율성.

참고: APC와 동일한 수준의 무료 PHP 코드 캐싱 기술에는 eAccelerator 및 XCache가 포함됩니다(설치 및 차이점: http:/ / blog.csdn.net/mossader/article/details/6343354)

데이터 전송 최적화

1. json 프로토콜 최적화

통신 프로토콜의 일반적인 설계 원칙에 있어서, 다양성과 간접성이 가장 중요합니다. 프로그램 응용 프로토콜의 기초로 JSON 프로토콜을 선택하는 것 자체가 시스템 최적화입니다.

2. gzip 압축 사용

서비스 엔드투클라이언트 프로세스는 복잡한 네트워크를 거쳐야 하기 때문에 네트워크 전송에 영향을 미치는 두 가지 주요 요소가 있는데, 하나는 네트워크의 품질이고 다른 하나는 데이터 자체의 크기입니다. HTTP 프로토콜의 경우 gzip은 현재 주류 압축 알고리즘 중 하나입니다. 대부분의 HTTP 서버는 이 압축 알고리즘을 지원합니다. (Apche 및 Nginx용 gzip 압축 기능 모듈 구성에 대한 자세한 내용은 네트워크 리소스를 직접 찾아보세요.)

계속됩니다...

참고: 이 문서는 "Best Practices for Android and"의 9장: 서버 측에서 발췌한 것입니다. PHP 개발" 최적화됨(삭제 포함)

위에서는 PHP 프로그램 최적화에 대한 내용을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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