2017-02-23 11 views
0

私は現在、バックグラウンドで実行しているPHPスクリプトを実行して、大きなテーブルを読み込んでいます。同時に、結果をAPIに送信しています。これは、バッファリングされていないクエリで行われます。このスクリプトの上にPHPバックグラウンドで継続的に実行されているスクリプトにユーザーを戻す

、私はそれが完了するまでスクリプトがバックグラウンドで実行されますことを確認するために

ignore_user_abort(true); 
set_time_limit(0); 

を入れています。私はまた、このスクリプトから進行状況レポートを取得しているJavascriptを持っています。しかし、ページがリロードされると、進行が再び開始され、データをAPI複製データに再度送信し始めます。

私は、スクリプト上でユーザーが続行できるようにする方法があるのだろうかと思っていました。したがって、スクリプトはすでにバックグラウンドで実行されていますが、ユーザーをスクリプトに戻す方法はありますか?

EX:

ユーザーがインポートを開始し、輸入は100万のうち、200行です。彼らはページをリフレッシュし、ページには100万のうち202行が表示されます。スクリプトがバックグラウンドで実行されてからユーザーが退去している間に、202milの原因時間がさらに多くの行をインポートしています。

ありがとう

+1

どのように進歩状況をJavaScriptで報告していますか? – apokryfos

+0

私はPHPスクリプトにAJAXリクエストを行い、PHPスクリプトは各行の終了後にAJAXにメッセージをエコーし​​ます。したがって、インポートされた行の数が通知されます – Dashwood

+0

データベースに項目をインポートするファイルをユーザーがアップロードしていますか? – Augwa

答えて

0

このケースにはwebsocketを使用できます。 websocketへの新しい接続を確立するときに、接続をクッキーに保存することができます。その後、ページをリロードすると、websocketサーバーへの接続を再確立できます。その上に、cookie変数から読み取れるwebsocketサーバーが必要です。

+0

例を挙げてください。 WebSocketサーバーを設定することは問題ではありません。socket.ioのようなものを使用することを意味すると思います。 – Dashwood

0

これはクッキーを使用して行うことができますか?

このCookieを更新するたびに、ページがリフレッシュされると、Cookieの情報を使用してページを更新して更新します。

+0

スクリプトはバックグラウンドで実行され続けますので、3億行などの大きな表を読み取ることになります。アイデアは、進捗状況を開始して終了し、実行して、いつでも復帰して進行状況を確認できるようにすることです – Dashwood

関連する問題