문제

나는 무엇을 할 수 있는 성능 향상을 위해 속도/나의 PHP 스크립트 설치 없이는 소프트웨어에 내버?

도움이 되었습니까?

해결책

프로필입니다.프로필입니다.프로필입니다.나는 확실하지 않은 것이 있다면 거기에 대한 PHP 지만,그것은 간단해야하는 작은 도구를 삽입하려면 프로파일링 정보에서 당신의 코드입니다.를 원할 것입니다 프로필수 시간과 SQL 쿼리 시간.

그래서 당신이 어디 있는 기능:

function foo($stuff) {
    ...
    return ...;
}

나는 그것을 변경하기:

function foo($stuff) {
    trace_push_fn('foo');
    ...
    trace_pop_fn('foo');
    return ...;
}

(이 경우 여러 반환에 함수가 되 hinderance.)

과 SQL:

function bar($stuff) {
    trace_push_fn('bar');

    $query = ...;
    trace_push_sql($query);
    mysql_query($query);
    trace_pop_sql($query);

    trace_pop_fn('bar');
    return ...;
}

결국,당신을 생성할 수 있습 전체 추적의 프로그램 실행 및 사용의 모든 종류의 기술을 식별하는 저하를 파악할 수 있습니다.

다른 팁

하나 합리적 기술을 쉽게 당길 수 있 선반은 캐싱이 가능합니다.방대한 양의 시간을 이동하는 경향이있으로 생성하는 리소스를 위한 클라이언트 사이의 일반적인 요청(심지어는 클라이언트 간에는);를 제거하는 이 런타임 일을 이어질 수 있는 극적인 속도가 증가합니다.할 수 있는 덤프 생성된 리소스(또는 리소스를 조각)으로 파일을 외부 웹 나무,그리고 다음에 다시 읽을 때 필요합니다.물론,일부 프로파일링 것을 보장하기 위해 필요한이보다 빠른 중생을 강제로 웹 서버를 다시 디스크에 정기적으로 유해할 수 있도록,리소스 정말 필요가 중 재사용할 수 있습니다.

수도 있습니다 놀라게 얼마나 많은 시간을 보낸 내부 심하게 작성된 데이터베이스 쿼리시간 일반적인 생성되는 쿼리를 수정할 수 있는지 확인하십시오 다시 쓰여집니다.의 양을 실행하는 데 소요되는 시간입니다 실제 PHP 코드는 일반적으로 매우 제한되지 않는 한 당신이 사용하는 몇 가지 최적화 알고리즘이 있습니다.

이러한 두 가지 모두 제한을 PHP 하지만,일부 의 PHP"magicy"접근 기능을 수 있는 이상-보호 하나에 대해 생각에서는 이러한 문제입니다.예를 들어,저는 최근 업데이트하는 스크립트를 사용하 array_search 을 사용하여 검색을 통해 배열 정렬,그 결과를 보면 예수 속도 향상.

정말 사용을 고려 XDebug 프로파일:그것은 도로는 특정 기능이 실행되는에 대해 당신이 무엇을 것이 예상됩니다.

나 줄이려고 하는 지침을 향상하는 동안 코드를 읽기 쉽도록 대체하여 논리와 배열을 조회할 때 적합합니다.그것이 무엇인 제프우드에 쓴[최고의 코드가 없는 코드에서는 모든][1].

  • 또한,피 루프 안에 다른 반복,그리고 중첩된 경우 다른 사람의 문이 있습니다.
  • 짧은 기능입니다.때로는 많이 코드 필요하지 않 실행 을 때의 결과 값은 이미 알려져 있습니다.
  • 불필요한 테스트:

    if(count($배)===0)return;

    작성할 수도 있습니다:

    if(!$배)return;

    다른 함수 호출 제거!

    [1]: http://www.codinghorror.com/blog/archives/000878.html"최고의 코드가 없는 코드에서는 모두"

할 수 있는 최적화된 코드로 두 가지 기본:

최적화 PHP 관련된 라이브러리와 서버

을 통해 이동 https://www.digitalocean.com/community/articles/how-to-optimize-apache-web-server-performance

당신이 사용할 수 있는 프로파일링 도구는 다음과 같 xhprof 을을 보려면의 일부 코드 수여 최적화 그리고 여기에 대한 링크를 따른다: http://michaelsanford.com/compiling-xhprof-for-php-5-4/

코드 최적화를 코드를 사용하여 프로파일러로 코드 해석기

를 설치해야 합 Netbeans 에서 사용하기 위해 이 플러그인입니다.단계는 다음과 같습니다 당신이 필요에 따라하기:

1)NetBeans 선택한 다음에서 옵션 메뉴 바의 도구>플러그인입니다.검색 플러그인이름"phpcsmd"에서 사용할 수 있는 플러그인에서는 탭을 설치합니다.

2)지금 열 터미널 및 수 있으로 최고 사용자에 의해 입력하는 명령은"sudo 스와".

3)설치 배 라이브러리(이 설치되어 있지 않은 경우)시스템으로 실행하여 다음과 같은 명령어 터미널

a) wget http://pear.php.net/go-pear.phar
b) php go-pear.phar

우리는 필요한 만큼 이에 대한의 설치한 애드온.

4)다음 명령을 실행

"pear config-set auto_discover 1"

이정 기술을 사용하는 것이 가능할 것이 자동 경로를 발견 할 수 있"true"를 위해 필요한 플러그인입니다.그래서 그들은 설치 원하는 위치에 자동으로 합니다.

5)실행 한 다음 같은 명령어를 설치하 PHP 코드를 탐.

"pear install --alldeps pear/PHP_CodeSniffer"

6)이 설치 PHP 혼란 검출기를 실행하여 다음과 같은 명령

"pear install --alldeps phpmd/PHP_PMD"

오류가 발생하는 경우에는"처럼 잘못된 패키지 이름/패키지 파일을"phpmd/PHP_PMD""를 설치하는 동안 모두에게 오픈되어 있습니다.당신이 이것을 사용할 필요가"배를 채널-발견 pear.phpmd.org"명령을 제거하는 이 오류가 있습니다.이 명령을 실행할 수 있습니다 위의 명령을 다시 설치하 혼란 검출기입니다.

7)이제를 설치하 PHP 따라 실행하여 다음과 같은 명령

"pear install --alldeps pdepend/PHP_Depend"

8)이 설치 PHP 복사본을 붙여넣기 탐지기에 의해 실행하는 다음과 같은 명령

"pear install --alldeps phpunit/phpcpd"

9)다음 명령을 실행

"pear config-set auto_discover 0"

이정 기술을 사용하는 것이 가능할 것이 자동차를 발견한 경로"false".

10)그물 콩과 경로를 따라 도구>옵션>PHP>PHPCSMD

마법은 없 솔루션을 제공하는 것을 시도하고 일반적인 솔루션을 수 있습을 잘 그냥 시간 낭비입니다.

여기서 당신의 병목 현상?예를 들어는 스크립트를 프로세서 데이터베이스//메모리 집중?

당신이 수행하는 어떤 프로파일링은?

포함한 파일은 느리고,필요 그들은 심지어는 느려집니다.당신이 사용하는 경우__프로그램에서 사용 가능한 모든 클래스에는 다음이 추가됩니다.예를 들어.

난 항상 주의하려고 너무 똑똑한 관점에서의 코드를 최적화하는 경우 그것은 희생 코드 clairty.이 필요한 경우에는 코드를 모호하게,빠른 것이라 그것은 저렴하지 않을 업그레이드 빠른 건조는 대신 시간을 낭비하고 변화를 가져오려고 노력하는가?프로세서 사이클보다 저렴 프로그래머는 사이클,후니다.

사람의 생각할 수 있습...

  • 루프 invariants 는 항상 좋은 볼만한 여행지 중 하나입니다.

  • 쓰 E_STRICT 및 E_NOTICE 준수하는 코드,특히 경우 로그인 오류가 있습니다.

  • 피@연산자입니다.

  • 절대 경로에 대한 필요 이 포함되어 있습니다.

  • 사용 strpos,str_replace etc.대신 표준 정규표현식을 할 때마다 가능합니다.

다음의 무리는 다른 방법이 있지만,아마도 늘 줄 당신은 많은 혜택입니다.

때마다 나는 성능 문제를 생각 할 수있는 가장 좋은 방법은 시간이 얼마나 오래 페이지를 실행한 다음에서 가장 느린 것들입니다.을 얻을 때 이러한 실제 측정,성능을 향상시킬 수도 있습니다에서 가장 느린 것으로 크기 순서에 의해 하나,고정 느린 SQL 쿼리 또는 아마도 바짝 죄기 코드 비트.

이 과정의 필요없는 새로운 하드웨어 또는 특별한 소프트웨어,다만 중요한 눈에서 기존의 코드입니다.

는 말했다,이것에만 작동합니다.는 경우에 당신은 정말 충분한 트래픽을 칠한 하드웨어 및/또는 몇 가지는 코드를 다만 본질적으로 느리고 정말 필요한보고해야합니다 다른 가능성이 있다.

나는에 대한 책임이 큰 시스템을보고하고 우리는 트랙이 가장 느린 보고서의 종류와 같습니다.나는 화재는 독특한 키으로 db 보고서를 시작한 다음 이 완료되었을 때 수 있는 방법을 결정하는 데 걸린 시간.나는 데이터베이스를 사용하기 때문에 그런 식으로 검색할 수 있는 페이지는 제한 시간(일어나는 것보다 더 많이 나는 다음과 같)

따라의 일부는 다른 조언을 먼저 다음과 같 프로파일링 및 좋은 자원할당을 결정,예를 들어,캐시됩니다.

또한 계정으로 가지고 성능의 외부 자원의 데이터베이스입니다.MySQL 에서 확인할 수 있습니다 slow query log 예를 들어.또한지 않았는지 확인하십시오 데이터베이스를 디자인하는 잊어 버려요.을 최적화하는 쿼리(다시 MySQL)에 대하여 실제 데이터의 지불하실 수 있습니다.

라스무스 Lerdorf 준 몇 가지 좋은 팁에서 자신의 최근 프레젠테이션"간단한 단단"에 FrOSCon'08.를 사용하는 경우에는 바이트시(그리고 당신이 정말로 사용해야 하나)를 포함 경로를 놓친 상처를 많이,그래서 최적화가 필요/require_once.

당신이 사용할 수 있는 프로파일링 도구는 다음과 같 xhprof 을을 보려면의 일부 코드 수여 최적화!

1)의 최신 버전을 사용 PHP

핵심 팀은 열심히 일하의 성능을 향상에 PHP 에서 모든 버전입니다.

2)Use a bytecode cache

PHP5.5a bytecode cache 추가되었습 PHP 이름 OPcache.용 OPcache 큰 차이를 만들 수 있습니다 특히 이후 PHP7.을 받을 개선에서 모든 소프트웨어의 업데이트 및을 얻을 수 있습니 JIT 구현에서는 향후.

3)프로파일링

을 개발하는 동안 프로파일링면 당신은 훌륭한 통찰력 정확히 무슨 일이 일어나고있다.이는 데 도움이 많이 찾는 병목 현상에서 당신의 코드입니다.

중 하나 가장 많이 사용되는 도구 XHProf 그러나는 공식적으로 지원되지 않습니다 더 이상 및 문제 PHP>=7.대체하려는 경우 프로필 PHP>=7 Tideways 는크 XHProf.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top