• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【PHP】Dropbox APIでの並列処理)

PHPでDropbox APIを使用して画像の並列アップロードをする方法

このQ&Aのポイント
  • この記事では、PHPを使用してDropbox APIを利用し、画像の並列アップロードを行う方法について説明します。
  • LAMP環境の開発サーバでPHPのバージョン5.3.29を使用しており、Dropbox APIはcomposerを使用して導入されています。
  • 具体的なコード例を示しながら、3枚の画像を同時にアップロードするための並列処理の方法について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

cURLの非同期処理を楽に書くためのライブラリを作ってみました. (まだほとんどテスト出来てないのでバグがある可能性はあります) https://github.com/mpyw/co http://qiita.com/mpyw/items/44a001101914450257dc 「非同期処理の部分的な直列化」を行うためにはPHP5.5以降から使えるジェネレータがほぼ必須ですが,全部並列に行うだけならPHP5.3から使えます. $results = Co::wait([$curl1, $curl2, $curl3]); これだけですね.既定ではどれか1つが失敗するとCURLExceptionをスローしますが,失敗時にcURLリソースをCURLExceptionに置換する例外安全なモードで使うことも出来ます. 問題はSDKを使っていることですね.SDKが生成するリクエストオブジェクトのようなものから何とかcURLリソースだけを引っ張り出せればどうにでもなるんですが,SDK自体を改造する,あるいは自分で認証なども含めてフルスクラッチする,ぐらいしないと厳しいでしょうか… 全く別のアプローチとして,単一のファイルだけをアップロードするスクリプトをBasic認証かDigest認証あたりをつけて置いておき,自分自身のサーバに対して並列にHTTPリクエストを飛ばして処理させる,という方法もあります.並列化はPHPではなくWebサーバの仕事になるので,こちらであればSDKをそのまま流用できますね.

yama-maron
質問者

お礼

To_aru_User様 お返事が遅くなってしまいまして、大変失礼致しました。 ライブラリを作成いただきまして、ありがとうございます。 githubより拝見させていただきました。 私がまだ未熟なため、ライブラリを上手く使用できるか分かりませんが、後ほど色々と試させていただきたいと思います。 ご丁寧なご対応をいただきまして、非常に助かりました。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.1

PHPは元々並列処理に対応していません。 pthreads の Thread クラスを使えば並列処理が可能ですが、CLI で動作させなきゃいけないなどの制約があります。 http://php.net/manual/ja/book.pthreads.php

yama-maron
質問者

お礼

t_ohta様 早速ご回答いただきまして、ありがとうございます。 CLIで動作させないと並列処理ができないとのことで、承知致しました。 プログラムの実行時間を短縮できればと思っておりますので、curl等を使った疑似的な並列処理につきまして、ご回答いただけますと幸いです。 以上、よろしくお願い致します。

関連するQ&A