php利用curl_*データの同時テスト
4668 ワード
オンラインになる前にテストデータが同時接続されていないため、ネットワークが悪い場合にデータベースにデータが重複して挿入される場合があるため、curl_*を使用して作業中にデータ同時接続の問題が発生しました.関数は、次のように、テストデータの同時実行のテスト例を専門に書きます.
function test(string $url){
$arr_ch = array();
// cURL
$mh = curl_multi_init();
$index = 0;
while($index < 20){
$ch = curl_init();
$arr_ch[$index] = $ch;
// url
curl_setopt($arr_ch[$index], CURLOPT_URL, $url);
curl_setopt($arr_ch[$index], CURLOPT_HEADER, 0);
// sessionid
curl_setopt($arr_ch[$index] , CURLOPT_COOKIE , "PHPSESSID=vj8qsrag5g6d2dh2t23nv03f11; qlpagecookieid=2dd06ed033d929e8cb4287c622e98275");
curl_multi_add_handle($mh , $arr_ch[$index]);
$index++;
}
//
$active = null;
//
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
//
foreach($arr_ch as $ch){
curl_multi_remove_handle($mh, $ch);
}
curl_multi_close($mh);
}