ホームページ > バックエンド開発 > PHPチュートリアル > Linux crontabのスケジュールされたタスクを処理する方法

Linux crontabのスケジュールされたタスクを処理する方法

WBOY
リリース: 2016-06-13 13:41:43
オリジナル
767 人が閲覧しました

Linux crontab のスケジュールされたタスクに関連
次に、テキスト メッセージを送信するスケジュールされたタスクを実行したいと思います。
最小の crontab は数分でしか設定できず、テキスト メッセージはより速く送信する必要があるためです。 1 分間に 60 メッセージを送信させてみました。
データベース キュー テーブルからロックされていないアイテムを 60 個検索します。ループ処理中にフィールドが更新されるたびに、フィールドがロックされていることを意味します。一般に、テキスト メッセージの量は非常に少なく、すべて 1 分以内に実行されます。今日は突然大量のリクエストが発生し、1 分間に 60 個の未処理アイテムが処理され、crontab が次のリクエストを発行しました。一つずつ処理した後にロックがかかるため、同時実行性が発生します。 (このリクエストで処理されなかったテキスト メッセージの一部は、次のリクエストに含まれます)。その結果、テキスト メッセージが繰り返し送信されます。

これはずっと改善したいと思っていました。なぜなら、量がいつも比較的少なく、よく考えていなかったからです。

見つかった 60 個のアイテムを発行する前にすべてロックできるはずです。しかし、いつロックを解除するかが問題です。

サードパーティのキュー サービスを使用する:
テキスト メッセージをデータベースに保存する場合は、自動インクリメントされる ID を memcacheq に保存し、定期的に実行します。 (時間指定実行は機能しないようです。1 分に 1 回では遅すぎます。PHP を使用してデーモンとして無限ループを作成しますか? (休止時間を設定できます) 常に実行するとメモリを消費しますか?)

ウェブサイトについて知りたいのですが、普段どのようにテキスト メッセージを送信していますか?デーモンなしでは即座に送信することは不可能です。 。 。

-----解決策--------------------------------
何かトラブルを起こしているようですが?

シェル スクリプトを作成し、curl を使用して 1 秒に 1 回リクエストできます (リクエストが終了するまで待つことはできません。または、実行が完了するまで待ってから 1 秒待ってから次のリクエストを送信することもできます) )、ステップ サイズ(毎回送信される最大数)を設定し、毎回ステップ サイズと同じ数のテキスト メッセージを取得し、最初にロックしてから、次のリクエストが実行される場合でも、1 つずつ送信します。送信が完了していない場合、この部分は繰り返し送信されません。
------解決策------------------
ここではすべてを行うために JAVA を使用します。あなたが言ったように、デーモンプロセスを使用する必要があります。
Python も使用でき、
php をスクリプトとして作成することもできます。始める。

------解決策------------------contab は定期的に php プログラムを呼び出してテキスト メッセージを送信します

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート