2017-05-10 15 views
0

私のPHPアプリケーションでは、大量のデータを一度に挿入するため、処理する必要があります。処理には多大な時間がかかりますので、以下のシナリオではアプリケーションを動作させる必要があります。データの挿入、MySQLデータベースとユーザへの'bulk mysql insert'を実行するたびに、backgroungでPHP関数を実行するには?

  1. は、新たにデータを処理するバックグラウンドのPHP機能を起動
  2. 処理
  3. のために挿入された データを言って、通知を得ます。 (データは、APIを提供する別のサーバーに送信することによって処理されます)。バックグラウンド関数は、一括挿入が完了した後に正確に実行されるはずです。

PHPに上記の問題の解決策として使用できる機能はありますか?

+0

のphp-resqueを見てみましょう:https://github.com/chrisboulton/php-resque – Oliwol

+0

GETデータを送信し、通知を送信し、cronジョブを開始すると、それはいいですか? –

+0

@Oliwol codeigniterプロジェクトでphp-resqueを使用するためのチュートリアル – MANU

答えて

0

はい、データが挿入されるとすぐにユーザーに応答を送信することができます。その後、必要なコードを実行できます。以下はその例です。

$this->insert($data); 
ob_start(); 
ignore_user_abort(true); 
$content = ob_get_contents(); 
ob_end_clean(); 
$len = strlen($content); 
header('Connection: close'); 
header("Content-Length: $len"); 
header("Status: I will continue doing what I do you please get out"); 
flush(); 
$this->procesNewData(); 

これは動作しますが、歓声が、それはチームメイトのようにそれがない場合には、支援を期待;)

+0

ユーザーがブラウザを閉じるか、データを送信した直後に他のページを開いた場合はどうなりますか? – MANU

+0

データを閉じる前にデータを挿入する前にデータを挿入しないで、何も実行されません。閉じた後に挿入した後にprocesNewData()関数が実行されます。 )、それはすべてです –

関連する問題