2016-10-14 34 views
0

現在、Codeigniterを使用してインターンシップにシステムを作成しています。このシステムは、ユーザーがサービス要求を作成できるようになります。リクエストを作成すると、自動的に承認者(別のユーザ)に電子メールが送信され、リクエストがあったことが通知されます。 (これは既に実装されています)。承認者は、要求を承認するかどうかを決定します。今、私の新しい任務は、依頼人が依然としてシステムの要求を承認または不承認としていない場合に、承認者が電子メール(30分ごと)で頻繁に通知を受け取ることです。私はこれをどのように可能にしますか?電子メールを繰り返し送信

+1

を見て。 – arkascha

+0

リモートサーバー上でcronジョブを開始するにはどうしたらいいですか? –

+0

"im on a remote server"の意味に依存します。これは、あなたがログインしていて、対話的なシェルを持っていることを意味するなら、 'crontab'コマンドを使ってください。それは十分に文書化されている。 manページ: 'man crontab'を読んでください。 – arkascha

答えて

0

DBには、このユーザーに対して、電子メールの送信回数と最後の電子メールが送信されたタイムスタンプをカウントするフィールドが必要です....その後、cron-tabbedスクリプト(1回実行30分ごとに)ユーザーが要求に応じた行動を取ったかどうかをチェックします。別の電子メールを送信し、送信された電子メールの数(増分)および新しい電子メールが送信されたときのUNIXのタイムスタンプでDBフィールドを更新します。

0

これを実行するには、cronジョブを使用する必要があります。 未処理の要求があるかどうかをチェックするスクリプト。 彼に未処理の要求がある場合は、彼に電子メールを送ってください。

+0

私はリモートサーバーにいる場合どのように私はcronジョブを使用するのですか? –

+1

あなたがホスティング会社にいる場合は、通常、これに管理者インタフェースがあります。 vpnを使用する場合は、シェルでcrontabを使用できます。 – OlajosCs

1

承認ステータスをチェックし、承認されていない場合は電子メールを送信する機能を持つコントローラを作成する必要があります。

例えば、

class checkapproval extends CI_Controller { 

    public function index() 
    { 
     // Database query to fetch all pending approval. 
     // $records = $this->db->where('status !=','approve')->get('table_name'); 
     // foreach($records as $record){ 
     // send email 
     // updated email timestamp in databse for record 
     // } 
    } 
} 

次に、このindexを30分ごとに実行します。ここに私たちが必要としているcronの仕事があります。

30分ごとに実行される以下のようなコマンドをcronジョブで設定する必要があります。 CodeIgniterのCLIに関する詳細は、

$php /path/to/project/index.php checkapproval index 

ジョブが行われているかどうかをチェックする定期的なベースでスクリプトを起動し、簡単なcronジョブを設定することによりHERE

+0

私の問題は、私たちがちょうどfilezillaを使ってリモートサーバーに接続しているということです。 –

+1

@CrystalGraceセットアップcronジョブにcPanelアクセスする必要があるかもしれません。 2番目のソリューションは、24時間365日に2番目のマシンを取得し、そのコントローラメソッドを30分ごとにurlで呼び出す必要があります。この場合、PHPコールのタイムアウトの問題に対処する必要があるかもしれません。 – jagad89

関連する問題