1


0

他のサーバーからファイルを取得し、DBに非同期にダンプする方法はありますか?

POSTを介して多くのURLを取得し、対応するファイルをロードしてDBにダンプするphpスクリプトを作成する必要があります。 問題は、非同期でやりたいことです。そのため、取得するファイルが1000個ある場合、すべてのファイルがロードされるまでスクリプトはハングしません。 また、ファイルの読み込みが完了するたびに、DBに挿入できるようにする必要があります。

任意のアイデアは大歓迎です。

2 Answer


1


スクリプトを2つの部分に分割します。1つ目はURLを収集し、2つ目はバックグラウンドから実行してデータベースにURLを挿入して取得するシェルスクリプトです。

したがって、基本的にプロセスは次のとおりです。

Script1:

  • POSTを取得します

  • データベースへの挿入

  • スクリプト2を呼び出す

  • バックグラウンドで実行するshell_exec

Script2:

  • urls_to_downloadからすべてのURLを取得します

  • URLを取得します(結果的または並行的に、あなた次第)

  • それらで何かをする

  • それらをデータベースに保存します。

そして、あなたは終わりました。 script1のPOSTはすぐに戻り、script2が実行されます。 進行状況に関する情報を表示する場合は、URLのステータス(AJAXを介したデータベースからのポーリング)を確認するだけです。


0


PHPはマルチスレッドではなく、完全に同期しています。 したがって、PHPのみを使用してこれを行うことはできません。

ただし、JavaScript(非同期)など、別の言語を使用してこのタスクを実行できます。 node.jsを試してください。 超高速でmysqlバインディングがあります;)http://nodejs.org/api.html#http-client-183 [http.Client]を使用してサイトにリクエストを送信します。