2012-05-02 17 views
1

現在、あるサイトから製品を入手し、データベースに保存しておき、その価格を別のサイトに表示しています。私は1つのサイトから価格を取得してデータベース内で毎日更新して、新しい更新された価格を他のサイトに表示できるようにしようとしています。データベースの自動更新価格、mysql

現在、商品番号を使用して商品を購入していますが、変更された価格を手動で入力して更新する必要があります。

私はいくつかの種類のcronジョブを使用しなければならないと推測していますが、これを行う方法がわかりません。私はcronjobsとの経験を持っていないし、PHPのnoobです。

アイデア? ありがとう!


私はforeachループでいくつかの読み方を行い、いくつかのコードを書いています。しかし、私のforeachループは、最初の項目番号に対して一度だけ実行されています。 foreachループが実行された後、 "api.php"ページに移動しますが、停止します。各項目番号ごとに連続して繰り返されるわけではありません。データベースのアイテム番号をすべて調べるにはどうすればよいですか?

また、私のコードに間違ったことがある場合は、教えてください。あなたは、サーバー上のcronジョブの者を持っている場合は おかげ

.... 


$itemnumber = array("".$result['item_number'].""); 

foreach ($itemnumber as $item_number) { 

echo "<form method=\"post\" action=\"api.php\" name=\"ChangeSubmit\" id=\"ChangeSubmit\">"; 
echo "<input type=\"text\" name=\"item_number\" value=\"{$item_number}\" />"; 

echo "<script type=\"text/javascript\"> 
function myfunc() { 
var frm = document.getElementById(\"ChangeSubmit\"); 
frm.submit(); 
} 
window.onload = myfunc; 
</script></form>"; 



} 


} 

答えて

0

は、それは非常にあなたがそれを更新PHPスクリプトを作るapparent-、毎日cronジョブでそれを投げるでしょう。

方法1:

しかし、私は、このようにそれを行うすべてのページリクエストの開始時に、最後に「更新」時間をチェック(あなたはそれを格納する方法を選択します)。 1日以上経過している場合は、更新して「更新」時刻を現在の時刻に設定します。

この方法では、誰かがページを読み込んで、最後の更新から1日が経過するたびに、そのページが更新されます。しかし、これは無作為のユーザーにとっては1日に1回の速度が遅いことを意味します。

方法2:(上記のチェック方法で)更新する必要がある場合は、データの非同期要求を開始し、残りのページを処理し、フラッシュしますwhileループでは、要求が完了して更新されるまで待機します。

方法2の欠点は、更新された値がユーザーに表示されないことですが、それ以上の待機がないという利点があります。

1

すでに外部サイトから製品データを取得してローカルデータベースに保存している場合、同じソースから価格を更新することは問題ありません。データを取得し、foreachループなどで反復処理し、アイテム番号に基づいてデータベースに価格を更新します。

アップデートスクリプトを作成し、それを手動で実行したら、cronジョブとして、それを追加すると、コマンド `のcrontab -e'を実行し、すべての深夜スクリプトを実行するには、この行を追加するのと同じくらい簡単になります。

0 0 * * * /usr/local/bin/php /path/to/your/script.php 

システムにPHPの正しいパスを使用することを忘れないでください。which phpをシェルで実行すると、パスがわかります。

+0

返信いただきありがとうございます。私はforeachループとcronjobsを読み始めます。 – myladeybugg

関連する問題