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 중국어 웹사이트의 기타 관련 기사를 참조하세요!