0

高レベルの擬似コードで達成しようとしているのは次のとおりです。

query db for a list of names (~100)
for each name (using php) {
    query a 3rd party site for xml based on the name
    parse/trim the data received
    update my db with this data
    Wait 15 seconds (the 3rd party site has restrictions and I can only make 4 queries / minute)
}

それで、これはうまくいきました。スクリプト全体で約 25 分かかりました (時間の 99% は、反復ごとに 15 秒待機するのに費やされました)。その後、私の Web ホストは、スクリプトが 70 秒後にタイムアウトするように変更を加えました (理解できます)。これは私のスクリプトを完全に壊します。

これを達成するには、cronjobs またはコマンドラインを使用する必要があると思います。私はcronjobsの基本的な使い方しか理解していません。この作業を cronjob で分割する方法について、高レベルのアドバイスはありますか? cronjob が動的リストを解析する方法がわかりません。

4

2 に答える 2

0

cron 自体は、あなたのリストと既に行われたことを知りませんが、2 種類の cron ジョブを使用できます。

たとえば、1 日に 1 回実行される最初の cron ジョブは、100 個のアイテムをジョブ キューに追加できます。

2 番目の cron ジョブ (たとえば、特定の期間に 1 分ごとに実行される) は、キューにアイテムがあるかどうかを確認し、1 つ (またはいくつか) を実行して、キューから削除します。

この場合、どちらの cron ジョブも php スクリプトを開始するためのトリガーにすぎず、キューを設定するスクリプトとキューの一部を処理するスクリプトの 2 つの異なるスクリプトがあることに注意してください。

于 2013-06-04T17:41:34.470 に答える
0

要するに、違いはあまりありません。modphp または fcgi 経由でスクリプトを実行する代わりに、コマンド ライン経由でスクリプトを実行しますphp /path/to/script.php

これは http とは異なる環境であるため、明らかに機能しないものもあります。セッション、Cookie、get および post 変数。出力はブラウザではなく stdout に送信されます。

を使用して、スクリプトに引数を渡すことができます$argv

于 2013-06-04T17:42:19.083 に答える