>  기사  >  백엔드 개발  >  PHP 성능 최적화 방법 소개

PHP 성능 최적화 방법 소개

尚
앞으로
2020-01-25 22:16:332796검색

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

코드의 병목 현상 최적화

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

PHP 버전 업그레이드

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

다음 링크를 클릭하여 구체적인 세부 정보를 알아보세요.

PHP 4에서 PHP 5로 포트

PHP 5.0에서 포트 캐싱을 사용하세요

캐싱 모듈(예: 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()은 name 속성을 저장하고 반환하는 것 외에는 아무 작업도 수행하지 않습니다.

$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")...

이 기사는 다음에서 복제되었습니다: https://www.cnblogs.com/baochuan/p/3523677.html

추천 관련 기사 및 튜토리얼:

php 튜토리얼

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

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