2011-07-08 11 views
3

が問題ですが、私はリンク、このようなものがあります。このPHP内PHPで時間のかかる作業をどのように処理するのですか?ここで

http://mydomain.com/veryLongPrcoess.php

を、私は非常に時間がかかる何かを行います。私はそれをAJAXを使って呼び出しますが、それを呼び出した後、最後にタイムアウトします。サーバーのプロセスがまだ実行中であるためです。それを処理するのに10分以上かかります...

私はどのようにユーザーに通知し、私は仕事を終えたことを伝えることができますか?それを待つのではなく、タイムアウトします。ありがとうございました。

+0

ユーザーIDに関連付けられたメッセージをテーブルに追加するだけで(例: 'tbl_notifications')、ユーザーがあなたのウェブサイトにアクセスしたときにページに表示されます。 –

答えて

3

これを行う1つの方法は、pcntl_forkを使用することです。これにより、長いタスクを別のプロセスで実行できるようになります。完了したら、ユーザーに電子メールを送信するだけで済みます。あるいは、AJAXを使用してサーバーをポーリングして、タスクが完了したかどうかを確認することもできます。

1

スクリプトの実行に時間がかかる場合は、pcntl_forkを使用してプロセスをフォークするだけでなく、set_time_limit(0)が必要になると思うので、スクリプトを必要なだけ実行できるようになります。そのメモリが発明的であれば、ini_setを使ってmemory_limitを上書きする必要があるかもしれません。

関連する問題