基本的にHarvest APIを使用してHarvestに接続し、いくつかの情報を取得するPHPページを作成しています。コードは基本的にHarvestのすべてのユーザーオブジェクトを返し、各ユーザーの費用を計算します。ロードに約50秒かかります。以下のコードをご覧ください。このPHPページの読み込みを高速化するには
<?php require_once('connection.php');
$result= $api->getUsers();
$users=$result->data;
$range= Harvest_Range::lastMonth();
foreach($users as $key=>$value){
$user_id=$value->get("id");
$first_name=$value->get("first-name");
$last_name=$value->get('last-name');
$result_expenses=$api->getUserExpenses($user_id, $range);
$expenses_data=$result_expenses->data;
$total_cost=0;
foreach($expenses_data as $key=>$value){
if($value->get("is-locked")=="true"){
$total_cost=$total_cost+$value->get("total-cost");
}}
?>
<?php if($total_cost!=0){?>
<tbody>
<tr>
<td> <?php echo $first_name; echo " ".$last_name; ?> </td>
<td> $ <?php echo $total_cost; ?> </td>
</tr>
</tbody>
<?php }}?>
</table>
ページの読み込みを高速化する手段はありますか?
それをベンチマークし、遅い部分が何であるかを見つけることから始めます。 – rtfm
私はあなたの側に最初にそのレコードをキャッシュしなければならないと思うし、その後キャッシュまたはローカルデータベースからデータを取ることができる – OsDev
ユーザーがページをリクエストしたときに実行時にそのような要求をすることはめったに良い考えではありません。あなたは@OsDevが示唆するようにすべきです。設定された間隔で呼び出しと計算を行い、結果をいくつかのキャッシュ(memcache、redisなど)またはあるデータベースに格納するバックグラウンドスクリプトを用意します。その後、ビジターはキャッシュまたはデータベースからデータを取得するだけで済みます。 –