私はphp/mysqlスクレーパーを作成しました。このスクレーパーはうまく動作しており、cronジョブとして最も効率的に実行する方法がわかりません。php cronジョブを実行するには、どれくらいの時間がかかるのですか?
サイトが300あり、それぞれ20〜200ページが削られています。すべてのサイトを削るには4〜7時間かかります(ネットワークの待ち時間やその他の要因によって異なります)。スクレーパーは毎日1回完全な作業を行う必要があります。
これを4〜7時間実行する1つのcronジョブとして実行するか、完了するまで毎時間7回実行するか、完了するまで10分ごとに実行しますか?
スクリプトは、このようにcronから実行するように設定されています
ている(この場合)600秒まで、一度に10件のURLを削るdo_scrape()関数を実行しますwhile($starttime+600 > time()){
do_scrape();
}
合格。 do_scrapeの実行には5〜60秒かかります。
これを実行する方法についてウェブ上の情報を見つけることができず、phpが実際に7時間の単一スクリプトとして実行されるように設計されているので、毎日実行することについては注意が必要です。
私はvanilla PHP/mysqlに書きましたが、lighttpd/mysql/php5だけをインストールしてdebian VPSを実行しています。私は問題なしで6000秒(100分)のタイムアウトでそれを動かしました(サーバは落ちませんでした)。
このタスクについてどのようにアドバイスしていただきますか。私は何を見なければならないのですか?私はこのすべてを間違って実行しようとしていますか?
ありがとうございます!
返信をお待ちしています。 私たちは、後処理の量が最小であるため(2〜5秒間のページリクエストあたり〜150ms)、カーリングスクリプトと処理スクリプトではなく、モノリシック構造を採用することに決めました。 マルチカールを使用して10個のURLを一度に取得するので、理想的ではありませんが、セミマルチスレッドです。 Pythonは理想的かもしれませんが、私たちが知っているもの(php)を使って作業をすばやく完了させるケースがありました。 ありがとう! – Rob