2017-02-07 10 views
1

私のウェブサイトでは、処理のために大量のファイルをアップロードすることができます。バックグラウンドPHPで非常に長いタスクを実行するには?

ここで、ファイルをアップロードすると、process_files()関数が呼び出されます。これは完了するまでに時間がかかり、タスクがタイムアウトするか完了するまで、基本的にユーザーがWebサイトを使用できなくします。

これを並列またはバックグラウンドで簡単に実行して、ユーザーが引き続きウェブサイトを使用できるのであれば、私は疑問に思っていますか?

私の場合が違う場合、これらはほとんど呼び出されません。

答えて

4

次の2つの部分にタスクを分割することができます唯一のディスク上のファイルを保存し

最初の部分(ウェブ)。この方法でWebパーツが高速に動作します。

second(システム)は、最初の部分で保存されたすべてのファイルを処理します。定期的にLinux上でcronタスクとして起動することも、システムに応じて他のタスクスケジューラを使うこともできます。

0

私は、ファイルのアップロード後、あなたがバックグラウンドで実行し、非閉塞される、CLI経由でスクリプトを呼び出すことを示唆している:

exec("php the_long_file_processing_script.php > /dev/null &"); 
関連する問題