>백엔드 개발 >PHP 튜토리얼 >앱의 속도를 높이는 방법 API 소비

앱의 속도를 높이는 방법 API 소비

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌원래의
2025-02-21 10:47:13142검색

PHP 응용 프로그램의 효율성을 향상시키기위한 전략 API Call

PHP 응용 프로그램을 개발할 때 원격 자원이나 서비스와 상호 작용 해야하는 상황이 발생할 수 있습니다. 응용 프로그램의 기능을 확장하려면 다양한 API 서비스를 사용하여 원격 데이터를 얻거나 다른 웹 사이트의 사용자 계정에 연결하거나 응용 프로그램에서 공유하는 리소스를 변환 할 수 있습니다. ProgrammableWeb 웹 사이트에 따르면 현재 웹에는 10,000 개 이상의 API가 가능하므로 PHP 응용 프로그램의 기능을 확장 할 수있는 많은 서비스를 찾을 수 있습니다. 그러나 API를 잘못 사용하면 성능 문제가 빠르게 발생하고 스크립트의 실행 시간을 연장 할 수 있습니다. 이를 피하려면이 기사에 설명 된 일부 솔루션을 구현하는 것을 고려하십시오.

여러 요청을 병렬로 처리합니다

일반 PHP 스크립트는 코드에서 순차적으로 명령을 실행합니다. 이전 작업 결과 (예 : 데이터베이스 쿼리 또는 변수 조작)의 결과를 스크립트의 다음 단계로 진행할 수 있기 때문에 논리적으로 보입니다. API 호출을 할 때 동일한 규칙이 적용됩니다. 수신 된 데이터에 대한 조치를 수행하기 전에 원격 호스트의 응답을 기다리는 요청을 보내야합니다. 그러나 응용 프로그램에서 여러 API 호출을하고 실행을 계속하기 위해 각 소스의 데이터가 필요한 경우 각 요청을 별도로 수행 할 필요가 없습니다. API 호출을 처리하는 서버는 여러 쿼리를 한 번에 처리 할 준비가되었습니다. API 호출을 다른 사람이 아닌 병렬로 실행하는 스크립트를 만드는 것만 큼해야합니다. 다행히도 PHP는이를 수행하도록 설계된

기능 세트를 제공합니다.

기능을 사용하는 것은 CURL 라이브러리를 사용하여 PHP에서 일반적인 요청을하는 것과 유사합니다. 유일한 차이점은 수행 할 요청 세트 (하나가 아니라)를 준비하고

함수를 사용하여 함수로 전달해야한다는 것입니다. 그런 다음 함수를 호출하면 요청이 동시에 실행되며 How to Speed Up Your App's API Consumption 는 각 API 호출의 결과를 얻을 수 있습니다. 논리를 구현하는 코드 예제를 보려면 여기를 읽으십시오.

PHP 응용 프로그램에서

함수를 사용하려면 몇 가지 중요한 사항이 있습니다. 먼저, 함수의 실행 시간은 요청 세트에서 가장 느린 API 호출이 함수로 전달되는 한 길다. 따라서 각 API 호출에 대한 시간이 거의 동일 할 때만 curl_multi를 사용하는 것이 합리적입니다.

세트에 다른 것보다 훨씬 느린 요청이있는 경우, 가장 느린 요청이 완료 될 때까지 스크립트는 계속 실행할 수 없습니다.

한 번에 실행할 수있는 병렬 요청 수를 결정해야합니다. 웹 사이트가 많은 트래픽을 처리하고 각 사용자가 원격 서버로 동시 API 호출을 유발하는 경우 한 번에 실행 된 총 요청 수가 빠르게 높아질 수 있습니다. API 문서에 명시된 제한 사항을 확인하고 이러한 제한에 도달 할 때 서비스가 어떻게 응답 할 것인지 알아보십시오. 한도에 도달하면 원격 서버가 특정 HTTP 응답 코드 또는 오류 메시지를 보낼 수 있습니다. 응용 프로그램은 이러한 상황을 올바르게 처리하거나 로그에 넣어 문제를 진단하고 요청 수를 줄일 수 있습니다.

기본 애플리케이션 프로세스에서 API 호출을 분리합니다 웹 애플리케이션을 응답하고 느리게로드하는 페이지를 제공하지 않으려면 원격 서버에 대한 많은 API 호출로 인해이 작업이 더 어려워 질 수 있습니다. 기본 응용 프로그램 흐름에서 모든 요청이 이루어지면 최종 사용자는 PHP 스크립트가 API 응답을 수신하고 데이터를 처리 할 때까지 렌더링 된 페이지를 보지 못합니다. 물론 빠른 서버에서 호스팅되는 많은 API 서비스가 있으며 요청을 신속하게 처리 할 수 ​​있습니다. 그러나 연결 지연 또는 연결 프로세스 또는 원격 서버 자체에 영향을 미치는 임의의 요소로 응용 프로그램이 때때로 느려질 수 있습니다.

이러한 문제로부터 최종 사용자를 보호하려면 기본 프로세스에서 요청을 처리하는 응용 프로그램의 일부를 별도의 스크립트로 분리해야합니다. 즉, API 호출은 사이트를 표시하는 코드의 일부를 방해하지 않는 별도의 스레드에서 실행됩니다.

이러한 솔루션을 구현하려면 별도의 PHP 스크립트를 작성하고 명령 줄 응용 프로그램과 마찬가지로 함수를 사용하여 실행할 수 있습니다. 다른 PHP 프레임 워크는 종종 쓰기 명령 줄 스크립트를 단순화하고 기존 애플리케이션 모델 또는 구성 요소에 쉽게 통합 할 수있는 모듈을 제공합니다. Symfony2 또는 CakePHP 콘솔 구성 요소를 확인하여 몇 가지 예를보십시오. 다양한 PHP 플랫폼 (프레임 워크가 아닌)은 WP CLI (WordPress의 명령 줄 인터페이스)와 같은 쓰기 명령 줄 스크립트를보다 쉽게 ​​작성하는 도구를 제공 할 수 있습니다.

별도의 프로세스에서 API 호출을 처리하는보다 강력한 방법을 찾고 있다면 Gearman과 같은 작업 서버 설정을 고려하십시오. 작업 서버는 특정 작업 (작업)을 별도의 프로세스로 분리하는 데 필요한 모든 작업을 수행하는 완전한 솔루션입니다. Alireza Rahmani Khalili의 Gearman 기사를 시작하여 작동 방식과 PHP에서 구현하는 방법을 알아보십시오. Zend 서버 플랫폼에서 작업하는 경우 유사한 기능을 제공하는 Zend 작업 큐 구성 요소를 사용할 수 있습니다. 기능과 사용의 예는 Alex Stetsenko가 작성한 "Zend Job Queue와 함께 스케줄링"기사에 설명되어 있습니다.

API 통화를 분리하려는 솔루션에 관계없이 응용 프로그램의 다른 부분이 서로 통신하는 방법을 고려해야합니다. 먼저, 응용 프로그램의 전체 부분에 액세스 할 수있는 API 호출에서받은 데이터 (예 : 데이터베이스 테이블 또는 파일)를 배치해야합니다. 또한 개별 스크립트 실행 상태를 공유해야합니다. 기본 응용 프로그램은 외부에서 실행 된 API 호출이 진행 중인지, 오래 전에 완료되었는지 또는 실패했는지 알아야합니다. 작업 서버 솔루션 사용을 고려하는 경우 작업 상태를 모니터링하는 기능을 제공 할 수 있습니다. 그러나 간단한 PHP 명령 줄 스크립트를 작성하려면 이런 종류의 논리를 직접 구현해야합니다.

다중 HTTP 요청 또는 여러 스레드? 따라서 함수를 사용하여 여러 HTTP 요청을 한 번에 실행하거나 기본 응용 프로그램 프로세스에서 API 호출을 분리하는 솔루션이 더 좋습니다. 원격 서버를 쿼리하는 컨텍스트에 따라 다릅니다. 전체 API 호출은 요청으로 인해 스크립트를 처리하는 데 오랜 시간이 걸릴 수 있습니다. 특히 변환 된 파일을 처리하거나 다량의 데이터베이스 쓰기를 수행 할 때 수신 데이터를 처리하는 데 많은 양의 코드가있을 수 있습니다. 이 경우 기능을 사용하면 응용 프로그램 속도를 높이기에 충분하지 않을 수 있습니다. 원격 호스트에서 수신 된 전체 작업 및 처리 데이터를 담당하는 별도의 스레드를 실행하면 응용 프로그램 성능이 향상 될 수 있습니다. 반면, 기능을 고수하면 응용 프로그램을 더 빨리 만들기에 충분할 수 있습니다.

물론 위의 두 가지 방법을 혼합하는 세 번째 솔루션이 있습니다. 따라서 API 통화를 처리하는 별도의 스레드를 실행 한 다음 한 번에 여러 요청을하여 더 빨리 실행하도록 시도 할 수 있습니다. 이는 각 요청에 대해 별도의 스크립트를 실행하는 것보다 더 효율적일 수 있습니다. 그러나 한 번에 실행 된 다른 스크립트 실행 및 다른 API 호출이 서로를 방해하지 않고 서로의 작업을 반복하지 않도록 스크립트 흐름이 어떻게 설계된 지에 대한 더 깊은 분석이 필요할 수 있습니다.

지능형 캐시 엔진을 구축하십시오 API 사용에 크게 의존하는 응용 프로그램 속도를 높이는 또 다른 솔루션은 스마트 캐시 엔진을 구축하는 것입니다. 다른 서버에있는 컨텐츠가 변경되지 않았기 때문에 스크립트가 불필요한 호출을하는 것을 방지합니다. 올바른 캐시는 단일 API 호출에서 서버간에 전송 된 데이터 양을 줄일 수 있습니다. curl_multi 작업 캐시 엔진을 작성하고 유효한 데이터를 반환하려면 원격 서버의 응답이 변경되지 않도록해야하므로 매번 얻을 필요가 없습니다. 이는 특정 API 서비스에 따라 다를 수 있지만 전체 아이디어는 주어진 시간 동안 동일한 응답을 제공하는 매개 변수 세트 (요청에 전달되는)를 찾는 것입니다. 예를 들어, 원격 서비스에서 일일 환전율을 얻는 경우, 주어진 통화 (매개 변수)의 환율이 하루 동안 변경되지 않은 것으로 확인할 수 있습니다. 따라서이 특정 API에서받은 데이터를 저장하는 데 사용되는 캐시 키에는 통화와 날짜가 모두 포함되어야합니다. 응용 프로그램이 다음 에이 특정 환율을 얻어야하는 경우 캐시에 저장된 데이터 (예 : 데이터베이스 또는 파일)를 참조하고 HTTP 요청을 피할 수 있습니다.

위의 시나리오는 응용 프로그램이 원격 서비스에서받은 데이터가 캐시 될 수있는 상황을 확인하는 모든 책임을 가정하므로 올바른 캐싱 로직을 직접 구현해야합니다. 그러나 API 서비스가 공유 데이터를 변경하고 특정 리소스에 연결된 메타 데이터를 포함하는 추가 필드를 반환하는 경우도 있습니다. 메타 데이터는 마지막 수정 날짜, 개정 번호 또는 리소스 컨텐츠에 따라 계산 된 해시 값과 같은 값으로 구성 될 수 있습니다. 이러한 종류의 데이터를 사용하면 특히 많은 양의 데이터를 처리 할 때 PHP 응용 프로그램의 성능을 향상시키는 좋은 방법이 될 수 있습니다. API에 연결할 때마다 전체 리소스를 얻는 대신 타임 스탬프 또는 해시 값을 마지막 수신 값과 비교하면됩니다. 그것들이 같으면, 원격 컨텐츠가 변경되지 않았기 때문에 이전에 가져온 데이터를 사용할 수 있음을 의미합니다. 이러한 솔루션은 애플리케이션에서 캐시 엔진을 사용한다고 가정하지만 캐시에 저장된 데이터가 유효한지 걱정할 필요는 없습니다. API 서비스가 반환 한 메타 데이터에 의존하므로 원격 서버가 제공하는 메타 데이터 값을 비교하면됩니다.

원격 자원 메타 데이터 사용은 특히 파일 호스팅 서비스 API를 사용할 때 유리합니다. 원격 폴더와 파일을 처리한다는 것은 종종 많은 양의 데이터를 전송하여 성능 문제를 일으킬 수 있습니다. 이를 피하는 방법에 대한 예를 들어 Dropbox API에 사용 된 솔루션을 설명하겠습니다. Dropbox API 서비스는 원격 파일이 변경되었는지 확인하기 위해 적용되는 특정 데이터를 반환합니다. 먼저 메타 데이터 메소드 (이름, 크기 또는 경로와 같은 폴더 및 파일 정보를 반환)에는 반환 된 리소스의 해시 값을 나타내는 해시 필드가 포함됩니다. 이전 요청에서 새 요청에서 매개 변수로 해시 값을 제공하고 요청간에 원격 데이터가 변경되지 않은 경우 API는 HTTP 304 (수정되지 않은) 응답 만 반환합니다. Drobox API는 또한 특정 폴더 또는 파일에 대한 변경 사항을 알리는 데 특별히 사용되는 델타 방법을 제공합니다. 해시 값 및 델타 방법은 응용 프로그램의 성능을 크게 향상시킬 수 있으므로 API 문서에서 권장됩니다.

마지막으로 : 마스터 링 API 문서 이것은 분명하게 들릴지 모르지만 경우에 따라 API 문서를주의 깊게 읽으면 API 전화를보다 효율적으로 만드는 방법에 대한 특정 솔루션을 제공 할 수 있습니다. 위에서 설명한 Dropbox API의 사용은 매우 명확한 예입니다. 그러나 응답에서 전송 된 데이터의 양을 줄이는 다른 방법이있을 수 있습니다 (예 : 전체 데이터 세트를 수신하는 대신 API에 의해 반환 된 몇 가지 특정 필드를 선택하십시오). 별도의 요청에서 수행 한 작업을 한 번에 수행 할 수 있는지 확인할 수도 있습니다. 예를 들어, Google Translate API의 번역 방법 (다른 언어로 텍스트 번역을 얻는 데 사용됨)은 한 번의 요청에서 여러 번역을 반환 할 수 있습니다. 하나의 API 호출로 처리하기 위해 일부 텍스트 문자열을 전달하면 여러 요청을 피할 수있어 일부 응용 프로그램 실행 시간을 절약 할 수 있습니다.

요약 보시다시피, 원격 API 사용에 크게 의존하는 PHP 응용 프로그램의 성능을 향상시키는 방법에는 여러 가지가 있습니다. 함수를 사용하여 여러 요청을 한 번에 수행하거나 별도의 응용 프로그램 스레드를 실행할 수 있습니다. 또 다른 솔루션은 불필요한 API 호출을하지 않거나 서버간에 전송 된 데이터 양을 줄이는 데 방해가되는 캐싱 엔진을 구현하는 것입니다. 마지막으로, API 서비스가 제공하는 접근 방식은 한 번의 요청에서 여러 작업을 수행하는 등 성능을 향상시키기위한 일부 상자 밖의 솔루션을 제공 할 수 있습니다.

이 게시물이 API 요청을 효과적으로 처리하는 방법에 대한 통찰력을 제공하기를 바랍니다. 기사에서 제기 된 핵심 사항 또는 API 사용 속도를 높이는 방법에 대한 다른 팁에 대한 의견이 있으면 아래에 게시하십시오. Google Plus를 통해 직접 저에게 연락 할 수도 있습니다.

가속 응용 프로그램 및 API 사용에 대한 FAQ API 성능에 영향을 미치는 주요 요인은 무엇입니까?

API 성능은 다양한 요인의 영향을받습니다. 우선, 서버의 처리 속도는 서버가 처리하고 응답을 반환하는 속도를 결정합니다. 네트워크 대기 시간 (즉, 데이터가 클라이언트에서 서버로 돌아 오는 데 걸리는 시간)도 중요한 역할을합니다. 기타 요인에는 API 코드의 효율성, 서버의로드 및 API 사용 수가 있습니다. 형식에 따라. 이러한 요소를 최적화하면 API 성능을 크게 향상시킬 수 있습니다.

더 나은 성능을 위해 내 API를 최적화하는 방법은 무엇입니까?

더 나은 성능을 위해 API를 최적화하기위한 몇 가지 전략이 있습니다. 먼저 효율적인 코딩 사례를 사용하여 서버의 처리 시간을 줄일 수 있습니다. 둘째, CDN (Content Delivery Network)을 사용하여 네트워크 대기 시간을 줄일 수 있습니다. 셋째, 캐시를 사용하여 자주 액세스하는 데이터를 저장하고 서버의로드를 줄일 수 있습니다. 마지막으로 데이터 압축을 사용하여 전송 된 데이터의 크기를 줄여 데이터를 보내고 수신하는 데 걸리는 시간을 줄일 수 있습니다. curl_multi API를 사용하는 것은 무엇을 의미합니까?

API를 사용한다는 것은 응용 프로그램에서 제 3 자 제공 API를 사용하는 것을 의미합니다. 여기에는 API에 요청 보내기 및 처리 응답이 포함됩니다. API는 애플리케이션이 API로 표시된 시스템 또는 서비스와 상호 작용하는 데 사용할 수있는 기능 세트를 제공합니다.

내 응용 프로그램의 API 사용 속도를 높이는 방법은 무엇입니까?

애플리케이션의 API 사용 속도를 높이는 방법에는 여러 가지가 있습니다. 먼저 비동기 호출을 사용하여 기본 스레드 차단을 방지 할 수 있습니다. 둘째, 페이징을 사용하여 API가 반환 한 데이터 양을 제한 할 수 있습니다. 셋째, 캐시를 사용하여 자주 액세스하는 데이터를 저장하고 API에 대한 요청 수를 줄일 수 있습니다. 마지막으로 데이터 압축을 사용하여 전송 된 데이터의 크기를 줄여 데이터를 보내고 수신하는 데 걸리는 시간을 줄일 수 있습니다.

API 성능에서 컨텐츠 배포 네트워크 (CDN)의 역할은 무엇입니까?

Content Distribution Network (CDN)는 API 성능을 향상시키는 데 중요한 역할을합니다. 다른 지리적 위치에있는 여러 서버에 컨텐츠를 배포하여 네트워크 대기 시간을 줄입니다. 클라이언트가 요청을 보내면 CDN은이를 가장 가까운 서버로 지시하여 데이터가 클라이언트에서 서버로 돌아 오는 데 걸리는 시간을 줄입니다.

캐싱은 API 성능을 어떻게 향상 시키는가?

캐시는 캐시에 자주 액세스하는 데이터를 저장하여 API 성능을 향상시킵니다. 클라이언트가 데이터 요청을 보낼 때 서버는 먼저 캐시를 확인합니다. 데이터가 캐시에 있으면 서버는 즉시 반환하여 처리 시간을 줄이고 서버에서로드합니다. 데이터가 캐시에 있지 않으면 서버는 데이터베이스에서 검색하여 처리하고 향후 요청을 위해 캐시에 저장합니다.

데이터 압축으로 API 성능을 향상시키는 방법은 무엇입니까?

데이터 압축은 전송 된 데이터 크기를 줄임으로써 API 성능을 향상시킵니다. 이는 데이터를 보내고 수신하는 데 걸리는 시간을 줄여 API의 속도를 증가시킵니다. 다량의 데이터를 처리 할 때 데이터 압축은 특히 유리합니다.

API를 사용하기위한 모범 사례는 무엇입니까?

API를 사용하기위한 모범 사례에는 비동기 호출을 사용하여 기본 스레드 차단을 방지하고, 페이징을 사용하여 API에서 반환 한 데이터 양을 제한하고, 캐시를 사용하여 자주 액세스하는 데이터를 저장하고, 데이터 압축을 사용하여 전송되는 데이터 크기를 줄입니다. .

내 API의 성능을 측정하는 방법은 무엇입니까?

다양한 메트릭을 사용하여 응답 시간, 오류율 및 처리량과 같은 API의 성능을 측정 할 수 있습니다. 응답 시간은 API가 응답을 반환하는 데 걸리는 시간입니다. 오류율은 오류가 발생하는 요청의 백분율입니다. 처리량은 API가 단위 시간당 처리 할 수있는 요청 수입니다. 이러한 메트릭은 API 모니터링 도구를 사용하여 측정 할 수 있습니다.

API 성능이 사용자 경험에 미치는 영향은 무엇입니까?

API 성능은 사용자 경험에 큰 영향을 미칩니다. API가 느려지면 로딩 시간이 느리면 사용자가 좌절하고 응용 프로그램을 포기할 수 있습니다. 반면, 빠르고 반응이 좋은 API는 매끄럽고 즐거운 사용자 경험을 제공 할 수 있습니다. 따라서 API 성능을 최적화하는 것은 사용자 경험을 향상시키는 데 중요합니다.

위 내용은 앱의 속도를 높이는 방법 API 소비의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.