cronジョブとPHP(Zend Framework)を使い始める
-
03-07-2019 - |
質問
私はcronジョブのテーマにまったく慣れていないので、cronジョブについてどこから学び始めればよいのかわかりません。私のZend Frameworkアプリケーション、または一般的なPHPでそれらをいつ、なぜ、またはどのように使用するか。
プロセスを例で説明したり、開始するための優れたリソースを推奨したりできますか?
解決
Cronジョブは、Linuxオペレーティングシステムのタスクを自動化するメカニズムです。また、Zend Frameworkを使用して実行することはほとんどありません。ただし、フレームワークは、PHPで高度なcronタスクを開発するのに役立ちます。ただし、シェルでcronジョブをセットアップする必要があります。
<!> quot; cronジョブのセットアップ方法<!> quot;このリンクを上部に表示しました:
http://www.adminschoice.com/docs/crontab.htm
この記事が役立つと確信しています。
P.S。
実行するコマンドとして、次のように入力する必要があります。
/usr/local/bin/php -f <path_to_your_php_script>
最初のパスはphp cli実行可能ファイルへのフルパスであり、マシンによって異なる場合があります。次のコマンドを発行して確認できます。
which php
cronジョブをお試しください;)
他のヒント
Zend Frameworkは何らかの疎結合コンポーネントのコレクションであるため、CLIスクリプトを含むすべてのPHPスクリプトで好みのコンポーネントを使用できます。ただし、PHPが関連するZend Frameworkクラスを見つけることができるように、Zend Frameworkライブラリパスをinclude_path
に追加する必要があります。次に、Zend_Loader_Autoloader
(ZF <!> gt; = 1.8)またはZend_Loader
(ZF <!> lt; 1.8)を使用して自動ロードをセットアップし、作業を楽にします。これで、自由に使用できるすべてのZend Frameworkコンポーネントにアクセスできるようになります。
他のすべてのスクリプトまたはプログラムと同様に、このPHPスクリプトはcronジョブで自然に使用できます。もう1つ注意すべき点は、cronジョブを実行しているユーザーがZend Frameworkライブラリパスへの読み取りアクセス権を持っていることを確認する必要があることです。そうしないと、PHPはZend Frameworkファイルを読み取ることができません。
CLIスクリプトでのMVCコンポーネントの使用を対象とした質問の場合、これに関する経験がないことを認めなければなりません。適切な要求クラス、応答クラス、ディスパッチャクラス、およびルートクラスを実装するには、無視できない努力が必要だと思います。
編集:
をご覧ください。詳細については、この記事を参照してください。
実際の例が役立つかもしれません。数年前、私はZend Frameworkを使用してイベントカレンダープロジェクトに取り組みました。このカレンダーでは、ユーザーはイベントを作成し、1つ以上の日付をイベントに添付できます。当然、これをデータベースの多対1の結合として実装しましたが、これは日付を添付するためにイベントが最初に存在する必要があることを意味しました。ただし、ユーザーがイベントを作成した後 ではなく、イベントを作成している間 日付を追加できるようにしました。つまり、ユーザーにイベントのすべての側面を同時に編集し、<!> quot; save。<!> quot;
をクリックしたときにのみ送信するようにしたかったのです。ユーザーがイベントレコードの作成を開始したときに、新しい空のイベントレコードをデータベースに挿入することで問題を解決しました。この空のレコードは、ユーザーが<!> quot; save <!> quot;をクリックすると入力されて保存されるか、ユーザーが<!> quot; cancel <!> quot;をクリックすると削除されます。ユーザーが<!> quot; cancel <!> quot;をクリックせずにナビゲートし、空のイベントレコードがデータベースに残されたときに問題が発生しました。最終的に、データベースはこれらの無意味な空のイベントでいっぱいになり、物事がくなるかもしれません。
<!> quot; maintenance()<!> quot;という関数を作成しました。これは、とりわけ、24時間以上経過した未保存のレコードをすべて削除しました。毎晩実行されるcronジョブをセットアップし、maintenance()を実行するコマンドラインphpスクリプトを実行しました。
cronジョブを使用する可能性のあるその他のこと:
- 新しいユーザーに一連のメールを送信します。 (5分ごと?)
- ユーザー統計を更新します(1時間ごと?)
- サーバーがトラフィックで非難されていないときにリソースを集中的に使用する操作を実行します(毎晩深夜に、または週に1日曜日の夜に?)
- ユーザーのリクエストに応じて発生しないその他のイベント(Jeffが<!> quot; out of band <!> quot;と呼んでいるもの)。
Zend Frameworkでcronシステムを実装する良い方法へのリンクは次のとおりです。
パーソナリー、パラメーターが動的になるように調整しましたが、ベースは同じです:-)