2017-01-19 12 views
0

JavaScriptからのリクエストに応答するためにadmin-ajax.phpを使用しています。WordPress admin-ajax - 応答が送信されるまでアクションを延期する

データをまとめて返信したときに、外部APIにデータを送信してユーザーにメールを送信する必要があります。これらのことはどちらも少し時間がかかります。

私は応答がユーザーに戻った後、彼らは基本的にバックグラウンドで起こることができるように、アクションをオフに設定する前に、AJAXを経由してJSONレスポンスを返します。このような何かを行うことができ期待していた:

function my_ajax_action() { 
     //process the $_REQUEST ajax data here 
     echo json_encode($results); 

     do_action('request_successful', $results); 

     wp_die(); 
} 

...それが死ぬ前に(PHPが非同期ではないので)アクションを完了するのは明らかに待ち受けており、応答が提供されるまでAJAXリクエストは完了しません。

応答が完全に送信されるまでこれらの処理を延期する方法はありますか?これらのアクションに付随する2つの機能は、レスポンスを配信する必要はなく、ユーザのブラウザに結果が表示されるまでに数秒かかるだけです。

私は非常にすぐに起こるようにそれらをcronジョブに保存することができると推測していますが、誰かが既にこの問題をより良い方法で解決している可能性が高いと感じています。

おかげ アーロン

答えて

0

すでにセッションデータを使用してスクリプトを持っている場合、それは、その後もセッションデータへのアクセスを要求します、後でスクリプトが最初のスクリプトまで保留されますが、PHPのセッションのロックに関連してできること終わらせる。それを避ける方法をもっと読む:http://konrness.com/php5/how-to-prevent-blocking-php-requests/

関連する問題