2017-04-04 20 views
0

私はSymfonyとDoctrineを初めて使いました。doctrine:エンティティDateTime年齢に基づくsymfonyメソッドの呼び出し

私は、DBテーブルに保存されているdateTimeオブジェクトが "期限切れ"(特定の(動的)の年齢に達する)たびに、Symfonyサービス内でメソッドを呼び出す必要があるプロジェクトを持っています。

私がまだ始まったばかりなので、まだコードはありません。ライフサイクルコールバックや教義イベントリスナ/ディスパッチャ構造のどちらもこの課題を解決できないように見えるので、私が必要とするのは出発点です。

私はここで重要な何かを見逃しているのでしょうか、それとも実際には教義自体で解決できない私の問題にまったく間違ったスタートですか?

私の考えでは、cron-job'ish構造がありますが、そのような実装は必要なだけ動的ではなく、十分に反応しない可能性がある特定の時間枠に拘束され、状況。

答えて

0

私があなたの問題を正しく解決している場合:レコードのdatetimeが期限切れになったときに実行するものが必要です。

主な問題は、あなたがまっすぐでないDBのイベントに基づいてPHPを呼び出す必要があります...

一つの可能​​な解決策は、(cronのを使用して)定期的に実行されますsymfonyコマンドできることであり、あなたが選択有効期限が切れたエンティティと必要なアクションを実行します。

+0

これは私が最初に考えていたものですが、dateTimeの有効期限が切れる次の秒には本当に必要なことがあります。これは、期限切れのdateTimesをチェックし、その後に必要な計算を実行するために、dbテーブル全体を照会する毎秒cronを実行する必要があります。それは実際には良いアイデアパフォーマンス賢明なIMOではありません。 –

0

私が知っている限り、ドクトリンは実際にはこのような作業を記述することができません。もちろん、DBは、ルックアップをトリガーする外部アクションなしで保存したレコードの一部に反応することはできません。

したがって、私が追及する予定のものは、atというシェルプログラムです。

実際には、私は(とkaton.abel)のようなものです。それは与えられた時間に応じて実行される(私はDBに保存する必要はありませんが、ただそれをatに渡す)1回のクロンを入力することができます。

このようにして、symfony経由でcronsを簡単に作成し、必要なデータをdoctrineで保存し、atでトリガーされたスクリプトを使ってコールバックメソッドを呼び出すことができます。

関連する問題