多分初心者の質問ですが、私は新しいので、実際にはこれに対する答えを見つけることはできません。最後の更新が30分より古い場合、データベースを更新します。
私が持っているのは、変換されたレートUSD/EUR
を返す1つのAPIが大丈夫で、うまく動作することです。
私が今作ろうとしているのは、データベースを現在のレートで更新し、次の30分間は更新しないことです.APIとページへの呼び出しを多くすることが重くなります。私は正しい答えbla
を持って
$thirtyminutes = strtotime("-30 minutes");
$newPrice=Price::all();
foreach ($newPrice as $newP) {
if (strtotime($newP['update_time']) > $thirtyminutes) {
echo 'bla';
} else { echo 'bla bla'; }
}
:私はこのような私のBaseController.php
でそれをやろうとしてきました。
実際の質問は、BaseController
がどこにでも含まれているので、これをどのように論理的にするかです。これは、各ページに負荷がかかることを意味します。これは、時間が最後に更新され、更新されるかどうかを確認するクエリです。それをBaseControllerに入れておけばいいですか?私はLaravel 4.2を使用してい
更新: これはテーブルを更新しない理由を任意のアイデア?すべて
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$query = "select * from Price";
$thirtyminutes = strtotime("-30 minutes");
if ($result = mysqli_query($conn,$query))
{
while ($row = mysqli_fetch_assoc($result))
{
echo $row['price'].'<br/>'; // from db
echo $thirtyminutes.'<br/>'; // 30min
echo strtotime($row['update_time']).'<br/>'; // last inserted time
if (strtotime($row['update_time']) > $thirtyminutes) {
$sql = "UPDATE Price SET price='12312', update_time = NOW()";
}
}
}
でのエラーは(私が思う)ページに正しいデータにショーをエコーしない:
123.00000000 // which is in database
1476702219 // 30min
1476694075 // last insert
UPDATE:表
price update_time
123.00000000 2016-10-17 11:47:55
アップデート:n番目の
$query = "select * from Price";
if ($result = mysqli_query($conn,$query))
{
while ($row = mysqli_fetch_assoc($result))
{
$sql = "UPDATE Price SET price ='1',update_time =NOW() WHERE update_time >= (NOW() - INTERVAL 30 MINUTE)";
}
}
私はそれを完全に取り出し、スケジュールされた仕事をXX分ごとに価格を更新させるでしょう。アプリケーションでそれを心配する必要はなく、負荷を大幅に増加させることなく更新時間を短縮することができます。 – jeroen
予定== cronjobを意味する? –
最後に更新された時刻をキャッシュに追加することができます(https://laravel.com/docs/4.2/cache)。 – xpuc7o