Weitere ähnliche Inhalte
Mehr von Kenjiro Kubota (18)
HackのAsyncCurlで死んだ話
- 11. <?hh
namespace HackUserDocumentationAPIExamplesce;
require __DIR__ . "/../../vendor/autoload.php";
async function get_curl_content(Set<string> $urls): Awaitable<Vector<string>> {
$content = Vector {};
foreach ($urls as $url) {
$str = await HHAsiocurl_exec($url);
$content[] = substr($str, 0, 10);
}
return $content;
}
function run(): void {
$urls = Set {'http://www.google.com', 'http://www.cnn.com'};
$content = HHAsiojoin(get_curl_content($urls));
var_dump($content);
}
run();
- 20. 1/5に修正される
c++で実装していた curl_multi_await をhack実装に変更
async function curl_multi_await(
resource $mh,
float $timeout = 1.0,
): Awaitable<int> {
$finish_by = microtime(true) + $timeout;
do {
$result = curl_multi_select($mh, 0.0);
if ($result !== 0) {
return $result;
}
await HHAsiolater();
} while (microtime(true) < $finish_by);
return 0;
}