質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2834閲覧

curlのマルチ処理がうまくいかない

nantaro

総合スコア10

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/04/24 03:36

初心者です。よろしくお願いいたします。
curlを使ってAPIを並列処理したいと思っていますがうまく行きません。

lang

1$mh = curl_multi_init(); 2 3foreach(…) {//一部略APIのURLを順番に入れていっています。 4$ch = curl_init(); 5 curl_setopt($ch, CURLOPT_URL, $urlg); 6 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 7 curl_multi_add_handle($mh, $ch); 8 curl_close($ch); 9} 10 11do { 12 $mrc = curl_multi_exec($mh, $active); 13 } while ($mrc == CURLM_CALL_MULTI_PERFORM); 14 15 while ($active && $mrc == CURLM_OK) { 16 if (curl_multi_select($mh) != -1) { 17 do { 18 $mrc = curl_multi_exec($mh, $active); 19 } while ($mrc == CURLM_CALL_MULTI_PERFORM); 20 } 21 } 22... 23

このような形で処理していますがうまく行きません。
ちなみにvar_dump($mrc);しますとint(0)になります。

これはAPIの情報をうまく取得できていないという意味でしょうか?
その場合、どうすれば値を取得できますか?

すいませんが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

foreachでやっている以下のコードが必要なと思います。

lang

1curl_close($ch);

おそらくですが、$mhにaddしたからといってクローズしてしまうと
curl_multi_execする前に空になってしまうのでは?

投稿2015/04/24 07:48

icham

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nantaro

2015/04/24 12:33

ご回答ありがとうございました。 curl_close($ch); を外してテストしましたが、やはりだめでした。 結果は同じでした。
icham

2015/04/25 00:44

どこでvar_dumpをしているのかわかりませんが int(0)はCURLM_OKなのでexecではエラーは出ていないと思います。 curl_multi_execの戻り値にAPIで取得したデータが入るわけではありません。 以下のサイトを参考にして実装してみてはいかがでしょうか? http://qiita.com/Hiraku/items/1c67b51040246efb4254 以前、こちらを参考にして実装して今でも動いています。 curl_multi_execは curl_multi_info_read curl_getinfo curl_multi_getcontent を使わないとAPIの結果データを取得できません。
nantaro

2015/04/28 12:08

ご返信がおそらくなりすいませんでした。 再度試してみます。 いろいろとありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問