다음과 같은 잠재적 상황이 발생할 수 있습니다.1 + cron 작업으로 1000+ API 호출?
1000 명이 넘을 수있는 웹 앱.
우리는 cronjob 호출이있는 1000 명 이상의 모든 사용자에 대해 외부 서비스 API를 통해 데이터를 가져 오도록 설정하려고합니다 (참고 : 각 사용자는 외부 API 서비스와 함께 자신의 API 자격 증명을가집니다)!
현명한 방법은 무엇입니까?
정보 : (!) 자격 증명
- 하나의 API 호출이 다시 데이터를 얻을 5 초까지 걸릴 수 있습니다.
가능한 스크립트를
cronjob에 모두 1000 명의 사용자를 순환 로컬 PHP 스크립트 (cronjobcall.php)를 호출합니다. 각 사용자에 대해이 스크립트는 curl (localfile_calls_api.php)을 통해 다른 로컬 스크립트를 호출하여 실제 API 호출을 수행하고 반환 된 데이터를 MySQL 데이터베이스에 저장합니다.
cronjobcall.php
foreach($ThousandsOfUsers as $UserId => $UserCredentials)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "localfile_calls_api.php?UserId=$UserId&UserCredentials=$UserCredentials");
curl_setopt($ch, CURLOPT_HEADER, 0);
$result=curl_exec($ch);
}
localfile_calls_api.php
// !!! this could take up to 5(!) seconds to return result
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://external_api_url.php?UserId=$UserId&UserCredentials=$UserCredentials");
curl_setopt($ch, CURLOPT_HEADER, 0);
$result=curl_exec($ch);
if($result)
{
save_to_MySql($result,$UserId);
}
나는 두 개의 서로 다른 PHP 파일에 모든 절차를 분할 생각하는 이유 API가 걸릴 수 자체를 호출하기 때문에 그래서, 즉,이다 5 초 동안 데이터를 반환합니다.
이 방법이 맞습니까?
더 좋은 방법이 있습니까?
고맙습니다. 당신이 정말로 정기적으로 각 사용자에 대한 그 API를 호출해야 할 경우
5 초? 그게 왜 중요한거야? API 호출을 별도의 PHP 파일에 넣는 것이 왜 * 어떤 차이를 만들 것이라고 생각하십니까? 모든 사용자에게 무려 5000 초가 걸릴 것으로 예상됩니다. 두 번 생각해 볼 가치가 없습니다. 모든 것을 하나의 PHP 파일에 넣으면 두 파일에 넣는 것보다 * 다를 바 없습니다. 두 파일을 어떻게 든 더 좋게/빨리 생각할 이유가 전혀 없습니다. – meagar
왜 주기적으로 데이터를 새로 고쳐야합니까? 사용자를 위해 필요한 경우 그냥 사용자가 로그인 할 때 API 호출을 만드십시오. – jeroen
나는 더 좋았을 것이라고 생각했지만 ... 5000 초로 무엇을해야합니까? 그게 ca 야. 83 분! 서버가 어떻게 이것을 할 수 있습니까? 대부분의 서버는 30 ~ 40 초 후에 페이지로드를 중지하도록 설정되어 있습니다 ...? 이렇게 반복하는 것보다 더 좋은 방법이 있을까요? – user1033406