2

新しいコンテンツの Web サイトをスパイダーし、必要なエントリをデータベースに保存する cron スクリプトがあります。重複を防ぐために、エントリは md5 ハッシュされ、検証されます。ただし、同時に 2 つのオカレンスが実行されることがあることに気付きました。DB に挿入された pregmatch ごとに 2 つ取得するため、この時点でハッシュ メソッドが失敗しています。

誰かが将来これが起こらないようにするための最良の方法を推奨できますか.

ログファイルを確認して実行をロックすることも検討しましたが、この場合、途中でエラーが発生すると、スクリプトが永久にロックされる可能性があります。

私は $_SESSION['lock'] の設定を検討しているので、この場合、ロックして壊れた場合、セッションはある時点で期限切れになります。

何か案は?

4

1 に答える 1

1

$_SESSIONコマンドラインではなく、Webサーバーから実行する場合はそのままにしておく必要があると思います。

最後の活動時間をファイルに保存します。cron が正常に動作を終了したら、ファイルを削除します。

cron スクリプトが実行されたら、ファイルを確認します。ファイルが存在しない場合、または最後のアクティビティが特定の期間より古い場合は、実行を続行します。それ以外の場合は停止します。

これもかなり簡単に実装できます。

スクリプトを実行する必要があるかどうかを確認します。

if(file_exists('lock.txt') && file_get_contents('lock.txt') > (time() - 60)){
   die('Should not run!');
}

特定のスクリプトのライフサイクル ポイントでアクティビティをログに記録します。

file_put_contents('lock.txt', time());
于 2013-09-26T14:37:29.577 に答える