質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

2回答

1433閲覧

FuelPHPでapiのレスポンスを返却した後にメールの送信を行うようにしたい

tama2015

総合スコア63

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2017/10/18 02:27

fuelphpAPIを作成しております。

exceptionなどが起きた場合は、管理者にメール通知が
届くようにしてあるのですが、メールの送信を挟むとレスポンスの
結果返却に時間がかかってしまいます。

apiのレスポンスを返却した後に、メールの送信を行うように
するには、どのような手段・実装を行えば良いのでしょうか?

わからない部分に関しましては、apiのレスポンスを返却した後に
何かを処理させる手法がよくわかっておりません。

どなたかお知恵を頂ければ幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

・ログファイルを監視してエラーを検知してメールを送信する。
・PHPからexecして別のバッチなどからメールを送信する。
というのはいかがでしょうか。

非同期にする以上は
「メール送信が失敗したら?」という問題もついて来るかとは思いますが
方法としてはこの2つもあるのかなと思いました。

投稿2017/10/18 03:12

yuki-saito

総合スコア928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tama2015

2017/10/18 11:01

execで非同期実行出来るとのことで、fuelphpのtask機能を利用してexecで呼び出せるクラスを定義して 呼び出すようにして、望んでいたコードが実現出来ました。 <?php namespace Fuel\Tasks; class Alerts { public static function run() { // Task内では、'\' が無いと認識されない。例 \Log \Email \Log::error('非同期***************************************'); $email = \Email::forge(); ・・・ $email->send(); } } 呼び出し $oil_path = realpath(APPPATH.'/../../').DIRECTORY_SEPARATOR; exec('nohup php '.$oil_path.'oil refine alerts > /dev/null &');
yuki-saito

2017/10/18 12:52

良かったです❗️????
guest

0

データベースを使っている前提ですが、
エラー記録用テーブルにエラー発生時に都度情報を残すようにしておき、
エラー発生時にメール送信はしないようにします。
そして、サーバー上で定期的に起動する処理(cron起動などで数分後ととか)がそのテーブルを参照して、
未送信部分をメールに展開して送信する、
みたいなバケツリレーのようなことでいいんじゃないかと思いました。

投稿2017/10/18 02:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tama2015

2017/10/18 11:04

このような方法もあるのですね! 大変参考になります。 今回は、execを利用して、fuelPHPのtaskで定義したクラスを呼び出す方法 で非同期メール送信を実現しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問