私は cron ジョブのテーマにまったく慣れていないので、どこから学び始めればよいかわかりません。Zend Framework アプリケーションまたは PHP 全般でそれらをいつ、なぜ、どのように使用するか。
例を挙げてプロセスを説明したり、開始するための優れたリソースを推奨したりできる人はいますか?
私は cron ジョブのテーマにまったく慣れていないので、どこから学び始めればよいかわかりません。Zend Framework アプリケーションまたは PHP 全般でそれらをいつ、なぜ、どのように使用するか。
例を挙げてプロセスを説明したり、開始するための優れたリソースを推奨したりできる人はいますか?
Cron ジョブは、Linux オペレーティング システムでタスクを自動化するためのメカニズムです。Zend Framework とはほとんど関係ありません。フレームワークは、php で高度な cron タスクを開発するのに役立ちます。ただし、シェルで cron ジョブを設定する必要があります。
「cronジョブのセットアップ方法」をグーグルで検索すると、上部に次のリンクが表示されました。
http://www.adminschoice.com/docs/crontab.htm
この記事が役立つと確信しています。
PS
実行するコマンドとして、次のようなものを入力する必要があります。
/usr/local/bin/php -f <path_to_your_php_script>
ここで、最初のパスは php cli 実行可能ファイルへのフル パスであり、マシンによって異なる場合があります。次のコマンドを発行して確認できます。
which php
cron ジョブで頑張ってください ;)
実際の例が役立つかもしれません。数年前、私は Zend Framework を使用してイベント カレンダー プロジェクトに取り組みました。このカレンダーでは、ユーザーはイベントを作成し、1 つ以上の日付をイベントに添付できます。当然のことながら、これを多対 1 の結合としてデータベースに実装しましたが、これは、日付を添付するには、イベントが最初に存在する必要があることを意味していました。ただし、ユーザーがイベントを作成した後ではなく、イベントを作成している間に日付を追加できるようにしたかったのです。つまり、ユーザーがイベントのすべての側面を同時に編集し、「保存」をクリックしたときにのみ送信するようにしたかったのです。
ユーザーがイベント レコードの作成を開始したときに、新しい空のイベント レコードをデータベースに挿入することで、この問題を解決しました。この空のレコードは、ユーザーが [保存] をクリックすると入力されて保存されるか、ユーザーが [キャンセル] をクリックすると削除されます。ユーザーが「キャンセル」をクリックせずに移動した場合に問題が発生し、空のイベント レコードがデータベースに残りました。最終的に、データベースはこれらの意味のない空のイベントでいっぱいになり、状況が悪化する可能性があります。
私は「maintenance()」という関数を書きました。これは、とりわけ、24 時間以上経過した保存されていないすべてのレコードを削除します。毎晩実行される cron ジョブをセットアップし、コマンドライン php スクリプトを実行して、maintenance() を実行しました。
cron ジョブを使用できるその他のこと:
Zend Framework は疎結合のコンポーネントの集まりであるため、CLI スクリプトを含むすべての PHP スクリプトで好きなコンポーネントを使用できます。ただし、PHP が関連する Zend Framework クラスを見つけられるようにする必要があるため、Zend Framework ライブラリ パスを .xml ファイルに追加する必要がありますinclude_path
。Zend_Loader_Autoloader
次に、 (ZF >= 1.8) または(ZF < 1.8) を使用してオートロードをセットアップしてZend_Loader
、生活を楽にすることができます。これで、自由に使用できるすべての Zend Framework コンポーネントにアクセスできるようになりました。
他のすべてのスクリプトまたはプログラムと同様に、この PHP スクリプトは cron ジョブで自然に使用できます。もう 1 つ注意すべき点は、cron ジョブを実行しているユーザーが Zend Framework ライブラリ パスへの読み取りアクセス権を持っていることを確認する必要があるということです。そうしないと、PHP は Zend Framework ファイルを読み取ることができません。
CLI スクリプトでの MVC コンポーネントの使用を対象とした質問である場合は、これに関する経験がないことを認めなければなりません。適切な request-、response-、distpachter-、および route-class を実装するには、無視できないほどの努力が必要であると思います。
編集:
詳細については、この記事を参照してください。
ZF で cron ジョブを保存する方法にも興味があるかもしれません
Zend Framework を使用して cron システムを実装する良い方法へのリンクを次に示します。
個人的には、パラメーターが動的になるように調整しましたが、ベースは同じです:-)