cUrlで、スタックオーバーフロー?
2013/05/16
cUrlで下記のようエラーがでてきた。
Warning: curl_getinfo(): xx is not a valid cURL handle resource in xxxxxxx
やろうとしていること
1000以上のURLを元にサイトが生きてるかどうか(ステータスコードの取得)をチェックしたい。
普通にやると時間がかかるので非同期処理の案として「curl_multi」を使うことにした。
だけど「1000以上のURLをセットするのどうなの?」という素人的な疑問を持ち下記のようにした。
1.「1000以上のURL」を「25件」でワンセットにする。
2.ワンセットにした「25件のURL」をcurl_multiへ。
3.「2」をループ。
※つまり「25件ずつチェックする」ってコトだな。
すると冒頭の「Warning」がでてきた。
・「curl_multi_remove_handle」や「curl_multi_close」もしてるけどダメっぽい。
・メモリリークを疑ってみたけど違うっぽい。
・とりあえず「unset()」もしてみたけどダメ。
調べると「スタックオーバーフロー」というワードが出てきた。
しょうがないので「1」の「25件ワンセット」を「5件ワンセット」にして再実行。
すると「Warning」がでてこなくなった。
5件ずつなので非同期のメリットが少ない。
とはいえ、普通に1件ずつ取得するよりは早いので良しとする。