2010-04-05 5 views
0

저는 현재 PHP로 웹 사이트에서 작업하고 있으며, 모범 사례/방법이 요청 시간을 줄이기 위해 어떤 것인지 궁금합니다. 모듈 방식으로 사이트를 구축 했으므로 페이지는 여러 모듈로 구성되며 각 모듈은 정보를 요청해야합니다.PHP의 속도 향상

예를 들어 장바구니 모듈이있는 경우 (장바구니가 설정된 경우) 세션 변수에 저장되어있는 id를 사용하여 장바구니를 가져 와서 해당 내용을 반환합니다. 범주를 나열하는 또 다른 모듈이 있는데이 모듈은 데이터베이스에서 범주를 가져와야합니다.

내 시스템은 모델로 구축되며, 각 모델에서 요청할 수도 있습니다. 예를 들어 카테고리 모델은 해당 카테고리의 제품을 요청합니다.

관심이 있으시다면, 지금 IIS로 Windows Server 2003에서 응용 프로그램을 실행하고 있지만 가까운 장래에 리눅스로 변경하고 싶습니다. 나는 이것이 광범위한 주제이며, 무엇을주의해야하는지, 부하를 돕기 위해 사용하는 도구에 대해서 궁금해합니다. 답변은 지금까지 매우 도움이되었습니다.

+0

일부 PHP 최적화 프로그램을 사용하여 PHP의 속도를 향상시킵니다. 당신이 묻고있는 것입니까? – smentek

+0

데이터베이스와 PHP가 같은 서버에 있습니까? 데이터베이스 디자인 최적화의 짧은, 쿼리 최적화는 조금 도움이 될 것입니다 ... –

+0

@smentek 네,하지만 또한 최고의 방법과 관행은 PHP의 실행 시간에 도움이됩니다. @OMGPonies 예, 데이터베이스와 PHP가 같은 서버에 있습니다 :) – cast01

답변

2

귀하의 실제적인 코드, 데이터 및 환경에 대해 그러한 접근 방법을 비교하는 것이 도움이되지만 귀하의 상위 수준 접근 방식은 합리적으로 들립니다. 즉 :

컴파일 된 PHP 스크립트를 캐시하는 eAccelerator과 같은 도구를 사용하면 코드를 더 빨리 실행할 수있는 빠르고 쉬운 방법입니다. 두 번째 요청이 스크립트에 들어올 때이 방법을 사용하면 두 번째로 컴파일 할 필요가 없으므로 성능이 향상됩니다.

사용자 수가 많은 사이트를 개발하는 경우 memcached와 같은 도구를 사용하여 데이터베이스의 데이터를 캐싱하는 것이 좋습니다.

+0

정보를 보내 주셔서 감사합니다. eAccellerator를 살펴보고 경험이 있습니까? 이걸로? 사용자에 관해서는, 예,이 웹 사이트는 많은 양의 사용자 (결국)를 수용 할 것이므로 memcached를 확인하십시오. 또한 RAM에 데이터베이스를 저장하는 것에 관해 들었습니다. – cast01

+0

예, 내 앱에서 eAccelerator를 사용하고 있으며 문제가 해결되었습니다. 유감스럽게도 나는 당신을 위해 견고한 통계를 갖고 있지는 않지만 본질적으로 앱에 투명하므로 원하는 경우 쉽게 테스트 할 수 있습니다. –

+0

"코드를 보는 것"대신 "귀하의 환경 및 데이터에서 귀하의 코드를 실행"하셨습니까? –

3

연습/방법은 요청 시간을 줄이기 위해 프로파일 링이라고합니다.
먼저 애플리케이션의 가장 느린 부분 인 "병목 현상"을 확인하십시오.
그런 다음 코드의 일부분을 빠르게 처리하십시오.

그 방법으로 만.

'적절한 경우'를 수행하면 상황이 악화 될 수 있습니다.

Firebug 콘솔의 "Net"페이지를 시작하는 것이 좋습니다.

-1

어쩌면 당신은 이러한 팁을 찾고 있습니다, 당신은 이것을 위해 구글 수 있습니다. example here.

  • require_once를()는
  • 사용 에코의 여러 매개 변수 대신 문자열 연결의 비용입니다.
  • 정규 표현식 대신 strncasecmp, strpbrk 및 stripos를 사용할 수 있는지 확인하십시오.
  • @에서 오류 억제는 매우 느립니다.
  • $ 행 [ 'ID는'] $ 행 [ID]

이 그냥 일반적으로 좋은 방법이 있지만, 코드가 느리게 실행되는 경우에 비해 7 배 빠른 - 당신이 당신의 응용 프로그램을 프로파일 링하고 알아 내야하는 지역이 느리고 이에 따라 적절하게 대응해야합니다.

+0

"문자열 연결 대신 에코의 다중 매개 변수를 사용하십시오." 어쩌면 나는이 팁을 오해하고있다. 그러나'echo '에 대한 여러번의 호출이'. =' – dclowd9901

+0

보다 비싸다는 것을 항상 이해하고있다. 축하해! 당신은 "가장 바보 같은 최적화 권장"배지를 얻습니다 : –

+0

오, 아니,이 링크가 아닙니다! 내가 여기서 "헛소리"라는 말을 사용하도록 허락 받았습니까? –

1

require_once를()는 문자열 연결의

사용 에코의 여러 매개 변수 대신 비싸다. 당신이 @에

오류 억제가 매우 느립니다 strncasecmp, strpbrk 및 stripos 대신 정규식을 사용할 수 있는지

을 참조하십시오.

$ 행 [ 'ID는'] $ 행 [ID]

이 모든 일들이 마이크로 최적화보다 7 배 빠르다. 캐싱과 불필요한 데이터베이스 쿼리의 수를 줄이는 등 실제로 중요한 모든 작업을 이미 완료해야만 볼 수 있습니다. Firebug를 다운로드하고 Page Speed ​​도구를 사용하는 것이 좋습니다. CSS를 축소하고 이미지를 최적화 할 수 있습니다. PHP 문법은 거의 걱정할 정도로 크지 않습니다.

편집 : @ 사용은 일반적으로 나쁜 습관이지만. 나는 또한 require_once를 사용할 필요성을 결코 발견하지 못했고, __autoload는 훨씬 쉬워 보입니다.

+0

$ row [ 'id']와 동일합니다. 그것은 단지 "최적화"가 아니라 구문 문제 일뿐입니다. –

+0

@Bryonh - 질문하는 질문이 모호하다는 것을 알 수 있습니다. 앱/사이트가 왜 느린 지 알지 못합니다. 나는 일반적인 제안을했다. Btw, 나는 당신의 대답이 질문에 대한 대답이 아니라 제 질문에 대한 의견으로 더 적합하다고 생각합니다. – Abs