PHP 성능 최적화에 대한 자세한 소개

黄舟
풀어 주다: 2023-03-06 19:26:01
원래의
966명이 탐색했습니다.

PHP는 매우 인기 있는 스크립팅 언어입니다. 현재 많은 회사(Sina, Youku, Baidu, Sohu, Taobao 등)에서 웹사이트 개발에 이 언어를 사용하고 있습니다. 이 기사를 통해 나는 단지 여러분의 PHP 스크립트의 성능을 향상시키기를 바랍니다. PHP 스크립트의 성능은 PHP 버전, 웹 서버 환경 및 코드의 복잡성에 따라 달라지는 경우가 많습니다.

코드의 병목 현상 최적화

Hoare는 "성급한 최적화는 모든 불행의 근원"이라고 말한 적이 있습니다. 웹사이트를 더 빠르게 실행하려면 최적화를 해야 합니다. 코드를 변경하기 전에 무엇을 해야 합니까? 시스템 속도를 저하시키는 원인은 무엇입니까? 데이터베이스 이유나 네트워크 이유일 수 있는 다음 지침과 기타 방법을 통해 PHP를 최적화할 수 있습니다! php 코드를 최적화하여 시스템의 병목 현상을 찾아볼 수 있습니다.

PHP 버전 업그레이드

팀원들은 PHP 엔진이 수년에 걸쳐 상징적인 성능 향상을 많이 이뤘다고 제안했습니다. 웹 서버가 여전히 php3 또는 php4와 같은 이전 버전을 실행하고 있는 경우. 따라서 코드를 최적화하기 전에 버전 간 업그레이드에 대해 자세히 살펴보아야 합니다.

캐싱

캐싱 처리에는 캐싱 모듈(예: Memcache) 또는 템플릿 시스템(예: Smarty)을 사용하세요. 라이브러리 결과를 캐싱하고 페이지 결과를 추출하여 웹사이트 성능을 향상할 수 있습니다.

출력 버퍼 사용

스크립트가 렌더링을 시도하면 PHP는 메모리 버퍼를 사용하여 모든 데이터를 저장합니다. 버퍼링을 사용하면 결과가 사용자에게 반환되기 전에 응답해야 할 모든 데이터로 버퍼가 채워지기 때문에 페이지가 느리게 나타날 수 있습니다. 다행스럽게도 버퍼가 가득 차기 전에 PHP가 사용자에게 응답하도록 변경하여 웹 사이트를 더 빠르게 보이게 할 수 있습니다.

  • 출력 캐시 제어

순진한 setter 및 getter 작성을 피하세요

PHP 클래스를 작성할 때 개체 속성 을 사용하면 시간을 절약하고 스크립트 성능을 향상시킬 수 있습니다. 사람들을 유치하고 우스꽝스럽게 만드는 세터와 게터보다는.

다음과 같은 경우가 있습니다. dog 클래스는 setName() 및 getName()을 사용하여 name 속성을 작동합니다.


class dog {
  public $name = '';

  public function setName($name) {
    $this->name = $name;
  }

  public function getName() {
    return $this->name;
  }
}
로그인 후 복사

참고: setName() 및 getName()은 이름 속성을 저장하고 반환하는 것 외에는 아무것도 수행하지 않습니다.

$rover = new dog();
$rover->setName('rover');
echo $rover->getName();
로그인 후 복사

name 속성을 직접 설정하고 접근하면 성능이 100% 향상되고, 개발 시간도 단축될 수 있어요!

$rover = new dog();
$rover->name = 'rover';
echo $rover->name;
로그인 후 복사

변수를 복사하지 않을 이유가 없습니다

때때로 주니어 PHP 사용자는 코드를 더 "깨끗하게" 만들기 위해 이미 정의된 변수를 다른 변수에 다시 할당하는 경우가 많습니다. 이로 인해 사실상 두 배의 메모리 소비(변수 변경 시)가 발생하고 이로 인해 스크립트 성능이 저하됩니다. 예를 들어, 사용자가 512KB의 변수를 다른 변수에 삽입하면 1MB의 메모리가 소모됩니다.

$description = strip_tags($_POST['description']);
echo $description;
로그인 후 복사

위 코드는 아무 이유 없이 변수를 복사합니다. 추가 메모리를 소비하지 않고 단순히 변수를 인라인으로 출력하면 됩니다.

echo strip_tags($_POST['description']);
로그인 후 복사

루프에서 SQL 작업 수행 방지

일반적인 실수는 SQL 작업을 루프에 배치하여 데이터베이스에 자주 액세스하는 것입니다. 더 중요한 것은 이로 인해 직접적으로 스크립트 성능이 좋지 않습니다. 다음 예에서는 루프 작업을 단일 SQL 문으로 재설정할 수 있습니다.

foreach ($userList as $user) {
  $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
  mysql_query($query);
}
로그인 후 복사

프로세스:

INSERT INTO users (first_name,last_name) VALUES("John", "Doe")
로그인 후 복사

이 루프 방식 대신 데이터를 단일 데이터베이스 작업으로 연결할 수 있습니다.

$userData = array();
foreach ($userList as $user) {
    $userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
 }
$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);
mysql_query($query);
로그인 후 복사

프로세스:

INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")...
로그인 후 복사
  • MySQL INSERT 구문

요약

PHP 성능 최적화에는 여러 가지가 있습니다. 이 측면에 대해 더 깊이 이해하고 계시다면 함께 토론하실 수 있습니다. 또한 다른 PHP 사용자가 참고할 수 있도록 귀하의 좋은 제안을 블로그 게시물에 반영하겠습니다. 많은 phper의 성능을 향상시킬 수 있다는 것은 phper로서 매우 자랑스러운 일입니다

. ——많은 사람들이 PHP를 풀뿌리 언어로 간주합니다. 저는 개인적으로 PHP 언어가 앞으로 더 발전하여 PHPer의 손에 더 많은 돈이 전달되기를 바랍니다.

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

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