WebサイトはCronでスケジュールされたタスクを実行できます

クロック

定期的にプロセスを実行する冗長な監視システムが数多く稼働しています。 毎分実行するものもあれば、何をしているかに応じて30晩にXNUMX回実行するものもあります。 たとえば、XNUMX日以内に購入しなかったすべての顧客をエクスポートしてクーポンを送信するスクリプトを実行する場合があります。

これらすべてを手作業で追跡するよりも、自動的にスケジュールされて実行されるジョブを作成する方がはるかに簡単です。 Unixベースのシステムでは、これはCronで実現されます。 あなたが何をしているのかを知っている皆さんのために、私が偽情報を捨てたら、私と読者を遠慮なく教育してください。

残念ながら、一般的なWeb開発者はCronにまったく精通していません。 たとえそうだとしても、Webホスティング会社はCronへのアクセスやサポートを提供しないことがよくあります。 私のホストは後者のXNUMXつです-彼らはあなたがそれを使用することを許可しますが、彼らはそれをサポートしていません。

cronとは何ですか?

クロン ギリシャ語のクロノスにちなんで名付けられました。 時間。 Cronは連続ループで実行され、Crontabによって蓄積されたタスクを実行します(おそらく タブレギュレーター。 これらのタスクは通常、Cronjobsと呼ばれ、サイト内のスクリプトを参照できます。

cron図の説明

Crontabを設定するにはどうすればよいですか

Cronを実際に実行するのは難しい場合があるため、これが私が学んだことと、それをどのように行ったかを示しています。 吸うなら:

  1. Twitterをチェックするようにスクリプトを設定しました API 誰かが返信したかどうかを確認する @ifsuck。 これらのメッセージを、Webサイトにすでに保存したメッセージと比較し、新しいメッセージを入力しました。
  2. スクリプトが機能するようになったら、ユーザーがスクリプトを実行するためのアクセス許可を有効にし(744)、スクリプト参照をCronjobファイルに追加しました。これについては後で詳しく説明します。
  3. 次に、SSH経由で自分のWebサイトにログインする必要がありました。 Macの場合、ターミナルを開いて入力する必要がありました SSH ユーザー名@domain.com ここで、usernameは使用したいユーザー名で、domainはWebサイトです。 次に、プロンプトが表示され、パスワードを入力しました。
  4. 次に、サーバー上のファイル名と相対パスを入力して、コマンドプロンプトから直接スクリプトを実行しようとしました。 /var/www/html/myscript.php
  5. 正しく機能するようになったら、ファイルの最初の行に必要なUnixコードを追加しました。 #!/ usr / bin / php -q 。 これは単にUnixにPHPを利用してスクリプトを実行するように指示していると思います。
  6. ターミナルのコマンドラインで、「 crontab (他の人はタイプする必要があるかもしれません crontab -e)そしてEnterキーを押してください…そしてそれが必要だったすべてでした!

Cronjobファイルの構文

上記の#2に関して、Cronは、スクリプトがいつ実行されるかを決定するために独創的なスキームを利用しています。 実際、これをコピーしてCronfileに貼り付けることができます(私のホストでは、次の場所にあります) / var / spool / cron / ファイル名は私のユーザー名と同じです)。

#+ —————-分(0 – 59)
#| + ————-時間(0 – 23)
#| | + ———-月の日(1 – 31)
#| | | + ——-月(1 – 12)
#| | | | +-曜日(0 – 6)(日曜日= 0または7)
#| | | | |
* * * * * /var/www/html/myscript.php

上記は私のスクリプトを毎分実行します。 30時間にXNUMX回だけ実行したい場合は、XNUMX時間後に何分実行したいかを入力するだけなので、XNUMX分の時点である場合は次のようになります。

30 * * * * /var/www/html/myscript.php

このファイルへのアクセス許可も実行可能ファイルとして設定してください。 構文、アクセス許可、およびターミナルウィンドウからのcrontabの実行が最も重要な要素であることがわかりました。 ファイルを再保存するたびに、権限もリセットする必要があります。

更新:ジョブが実行されていることを確認したい場合、XNUMXつの簡単な方法は、スクリプトが最後に実行された時刻でデータベースフィールドを更新することです。 頻度が低い場合は、自分宛てに送信された電子メールのスクリプトを作成するだけでかまいません。

追加のcronリソース:

Cronを利用して自動化できるジョブはいくつありますか?

8のコメント

  1. 1

    cronの設定に関する十分にカバーされた記事、crojobsに不慣れな人にとって、cronを設定する上で最も難しい部分は、cronjobの実行間隔を把握することであり、最初の試行で間違った間隔を取得することは非常に一般的です。 cronジョブが時間に敏感な場合は、スクリプトにいくつかのコードを含めてステータスをエコーアウトし、ジョブの実行ステータスを常に通知できるようにすることをお勧めします。

  2. 2

    こんにちはダグ、

    cronジョブを使用する際に考慮すべき点がいくつかあります。

    まず、数十回後、UI、データベース、英語に見える構文があればいいのにと思います😉

    次に、cronは、ジョブの前回の呼び出しが完了したかどうかに関係なく、指定された時間にジョブを起動します。 したがって、2分かかるXNUMX分にXNUMX回ジョブを実行すると、同じジョブが多数実行されることになります。

    次に、問題が発生した場合のエラーレポートはほとんどないため、独自のエラーレポートを追加する必要があります。

    私はいくつかの方法でこれらに対処しました:
    – cronを介してトリガーされたアプリケーションにデータベースを調べて、何を実行する必要があるかを判断します。 必要に応じて、XNUMX分またはXNUMX時間にXNUMX回実行します
    –各スクリプトに/ tmpに「ロック」ファイルを作成させます。存在する場合は、再度開始しないでください。これにより、ジョブが不要な場合に重複するジョブが防止されます。
    –スクリプトが1時間より古いロックファイル(またはあなたが死んだことを示唆するもの)を見つけた場合は、電子メールアラートを送信します
    –ジョブの失敗時にスクリプトに電子メールを送信させて、問題が発生したことを確認します
    –ニーズがいくつかのスクリプトを超えた場合は、Fluxや商用スケジューラなどのフレームワークを検討してください

    クリス

  3. 4

    また、ほとんどのLinux / Unixシステムでは、「crontab-e」がcrontabの編集に使用するものであることも追加します。 あなたのホスト(Jumpline)はセキュリティ上の理由から修正バージョンを使用していると思います。

  4. 5

    クロニーに会った最初の日を今でも覚えています。 私は彼女について、常に時間通りに頼りになると聞いていましたが、時々彼女の意図について少し混乱しました。

    彼女は最初は完全に謎だったので、これは本当だと思いました。 彼女について尋ねた後、私は彼女がどのように操作するのが好きかについてかなり早く理解しました。 今、私は私の人生で彼女なしで過ぎ去る日を想像することはできません。 彼女はありふれたものをエキサイティングにし、私の肩から多くの負担を取り除きます。

    真面目な話ですが、cronジョブで自動化できるもので表面をかじっただけのように感じます。 彼らは本当に開発者の親友です。 CPanelのような人を使用してサーバーを管理している場合は、cronを作成するためのはるかに使いやすいインターフェイスが提供されます。 分、時間、日、月などのドロップダウンメニューを完備して、cronラインを構築します。

  5. 7

    これはすべてのマーケティング担当者が使用すべきものだと確信しています…少し「技術的」に聞こえるので、このサービスを提供できる人はいますか?

どう思いますか?

このサイトはAkismetを使用して迷惑メールを減らします。 コメントの処理方法を学ぶ.