PHP 프로젝트에서는 기본 기능 또는 기본 실행 프로세스의 효율성이 전체 성능에 직접적인 영향을 미칩니다. 하드웨어 업그레이드 외에도 실행 문제가 느리게 발생하면 코드 자체를 최적화하는 것이 더 중요합니다. 이 기사는 PHP 실행 효율성을 향상시키기위한 몇 가지 실용적인 방법을 소개하여 주요 기능의 작동 속도를 높이는 데 도움이됩니다.
시간이 많이 걸리는 계산 또는 데이터 요청의 경우 캐싱을 통해 반복적 인 실행을 피할 수 있습니다. 일반적인 캐싱 방법에는 파일 캐시, 메모리 캐시 (예 : Redis, Memcached) 등이 포함됩니다.
샘플 코드 :
<?php
$cacheFile = '/tmp/cache.txt';
// 캐시가 존재하고 만료되지 않은지 확인하십시오
if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < 3600) {
$result = file_get_contents($cacheFile);
} else {
// 시뮬레이션 시간 소모 작업
$result = file_get_contents('https://gitbox.net/api/data');
file_put_contents($cacheFile, $result);
}
echo $result;
?>
캐시를 통해 네트워크 요청 또는 복잡한 작업을 줄이고 프로그램 응답 속도를 크게 향상시킵니다.
PHP의 기능을 자주 호출하면 약간의 오버 헤드가 발생합니다. 루프에서 복잡한 기능을 호출하지 않거나 결과를 미리 계산하지 마십시오.
<?php
$data = range(1, 10000);
// 권장되지 않습니다:루프에서 함수를 호출합니다
foreach ($data as $item) {
echo strlen("Value: $item") . "\n";
}
// 최적화:미리 길이를 계산하십시오
$prefix = "Value: ";
$prefixLen = strlen($prefix);
foreach ($data as $item) {
echo $prefixLen + strlen((string)$item) . "\n";
}
?>
기능 호출 수를 줄이면 CPU로드가 줄어들 수 있습니다.
많은 양의 데이터를 처리하려면 생성기가 데이터 생성을 지연시키고 한 번에 많은 양의 메모리를로드하지 않을 수 있습니다.
<?php
function getLargeDataset() {
for ($i = 0; $i < 1000000; $i++) {
yield $i;
}
}
foreach (getLargeDataset() as $value) {
// 처리 데이터
if ($value > 10) break; // 예제는 일찍 종료됩니다
}
?>
생성기는 메모리가 적은 동일한 작업을 수행합니다.
PHP 내장 기능은 일반적으로 기본 레벨에 대해 최적화되며 PHP 필기 코드보다 훨씬 빠르게 실행됩니다. 예를 들어, 루프 대신 array_map , array_filter , array_reduce 등을 사용하십시오.
<?php
$numbers = [1, 2, 3, 4, 5];
// 필기 루프
$squares = [];
foreach ($numbers as $n) {
$squares[] = $n * $n;
}
// 최적화版
$squares = array_map(fn($n) => $n * $n, $numbers);
?>
내장 기능을 사용하면 코드가 더 간결하고 효율적입니다.
Opcache는 PHP의 공식 바이트 코드 캐시 확장으로, 실행 될 때마다 스크립트를 재 컴파일하지 않아 실행 효율성을 크게 향상시킬 수 있습니다.
오픈 메소드 (php.ini) :
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
php -i |를 실행하십시오 Opcache가 활성화되어 있는지 확인하기 위해 명령 줄의 Grep Opcache .
동일한 파일이 여러 번로드되는 것을 피하고 I/O 오버 헤드를 줄 이도록 요구하거나 포함하지 않고 require_once 또는 include_once를 사용하십시오.
<?php
require_once 'config.php';
require_once 'functions.php';
// 코드를 계속 실행하십시오
?>