閲覧いただきありがとうございます。
どうしても解決に困っているので、知恵を貸してください。
現在、PHPのcurl_multi関数を使用した、HTTPの非同期処理を実装しています。
参考にしたサイトは、下記URLです。
http://qiita.com/Hiraku/items/1c67b51040246efb4254
上記サイトに掲載されているソースをそのまま使用し、execHttpMultiThread関数を作成しました。
URLの配列とタイムアウト時間を引数とした関数です。
また、念のためfunctionの頭から最後までをtry~catchで囲みました。
上記関数を利用した、以下のような処理を書いて実行したところ、妙なエラーが発生しました。
**********************
【処理 test1.php】
echo 'マルチスレッド処理開始';
$http_list = array(
'http://hoge.jp/test2.php?v=multi_01',
'http://hoge.jp/test2.php?v=multi_02',
'http://hoge.jp/test2.php?v=multi_03',
);
execHttpMultiThread($http_list, 30);
echo 'マルチスレッド処理終了';
【処理 test2.php】
// GETされた値を取得
$value = $_GET['v'];
// 10秒間スリープ
sleep(10);
// ログ出力 ※ログを出力させる自作関数です
writeLogInfo(date('Y-m-d H:i:s'). ' 処理が完了しました:'. $value, 'test', 'ThreadTest');
**********************
【表示されるエラー】
マルチスレッド処理開始
Warning: (null)(): 12 is not a valid cURL handle resource in Unknown on line 0
Warning: (null)(): 13 is not a valid cURL handle resource in Unknown on line 0
Warning: (null)(): 14 is not a valid cURL handle resource in Unknown on line 0
Warning: (null)(): 12 is not a valid cURL handle resource in Unknown on line 0
Warning: (null)(): 13 is not a valid cURL handle resource in Unknown on line 0
Warning: (null)(): 14 is not a valid cURL handle resource in Unknown on line 0
**********************
警告が出ているのは分かるのですが、関数名・ファイル名・行数など
何も書かれていないため、まったく原因が分かりません。
マルチスレッド関数を実行した後、表示させたいメッセージが表示されていないため
関数から処理が帰ってきていないだろうことは分かるのですが・・・
皆さんの知恵を貸していただけないでしょうか。
よろしくお願いいたします!
お礼
ご回答ありがとうございます! 現在使用しているPHPのバージョンは5.3.28なのですが、 これがいけない、ということですね。 PEARを使用した非同期処理の書き方を解説しているサイトがありましたので、 そちらを使用して頑張ってみたいと思います。 ありがとうございました!