@hakreあなたが与えたものは、ユーザーが応答を待つ時間を短縮しません。
私は、このための最善の解決策が見つかりました:これはあなたがコントローラの背景アクションから実行してみましょう拡張したものです runactions extension for yii
を。 それを使用するにはいくつかの方法があります。私の場合のための最高の一つは、この
public function actionTimeConsumingProcess()
{
if (ERunActions::runBackground())
{
//do all the stuff that should work in background
mail->send()
}
else
{
//this code will be executed immediately
//echo 'Time-consuming process has been started'
//user->setFlash ...render ... redirect,
}
//User information
echo "Submit Success!"
}
そして、その作業が、私は、AJAXリクエストが何らかの理由のために働いていないその作りのAjaxリクエスト、なしです。 は、だから私は使用:
ERunActions::httpPOST($this->createAbsoluteUrl('Form/Submit'), array('to'=>'[email protected]', 'subject'=>'This is the subject'));
そしてその作業素晴らしいが、これのためにそのない理想的なソリューション。
出典
2012-04-05 12:43:12
Dar
http://www.php.net/manual/en/function.ignore -user-abort.php – hakre
私はここで少し混乱しています。どのようにプロセスの1つで停止できますか?一度、ユーザーの要求が送信されるので、最初の2つの手順はサーバー上で行われます。3番目のステップはクライアント側にあり、それは通知です。基本的に3つのステップがすべて実行されます。違いは、ユーザーがブラウザを閉じると、通知が表示されないことがあります。それとも間違っているのですか? – itachi
基本的には、何が起きてもユーザーがメッセージを受け取れるように、順序を変更する必要があります。任務の残りの部分が処理され、他の任務から応答するためには、ユーザーのニーズが長くかかります。メールの送信が成功したかどうか、またはdbに保存するかどうかはユーザーが気にしません。 – Dar