際際滷

際際滷Share a Scribd company logo
堰温界一の粥壊霞稼界遺顎姻鉛で棒んだ三
2017/10/08 PHPerKaigi LT@KenjiroKubota
Pro le
Kenjiro Kubota
istyle.inc
PHPers膨定の弌僥伏です
挫きなFWはLaravelとZend-Expressive
堰温界一はもちろん岑ってますよね
HHVM/Hack
HipHop Virtual Machineは、JIT圭塀でPHP式びHackといったプログラ
ミング冱Zごg佩する∀覘h廠。
HHVMでg佩されるコ`ドはJITコンパイルの^殻でまず嶄圷のの
HHBCにQされ、啜弔x64のC亠Zへとコンパイル?恷m晒を佩っ
た貧でg佩される。
HHVMはFacebook芙が_kしておりGithub貧でPHP License、Zend
Licenseのもと巷_されている。(Wikipedia)
F佩のLTSである3.24を恷瘁にPHP5への札Qが恷瘁となり、書瘁は
Hackのみがg佩鵑箸覆襪海箸苧らかにされている。
アイスタイルでは堰堰閣珂/堰温界一を駻辰靴泙靴
リリ`ス念のサ`ビステストで
HHVMが棒にまくる並宛がk伏
是ったこと
HHVMが竃薦するerror.logが畠く歌深にならない
峺協されたスタックトレ`スログもCore Dump Abortしか竃てない
蒙協のリクエスト、レスポンスrでのクラッシュではない
ググったら仝HHVMはたまに鯛ちるから棒試Oで壅軟咫垢箸恷
な盾Q圭隈しかB初されてない
おお HHVM,靴鵑任靴泙Δ箸 なにごとだ
ところでこのHack、K双I尖ができるんです
Hackはasyncv方を聞うことでf{議マルチタスキングを旋喘すること
ができます。
I/Oやデ`タの函誼I尖のレイテンシgに麿のI尖を佩うといった碧M
み。
HHAsiocurl_exec
https://docs.hhvm.com/hack/reference/function/HH.Asio.curl_exec/
<?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();
}でいてあるけど、
これがHHVM篷世淋咀でした
どうなっていたのか
HHAsiocurl_exec が坪何で旋喘している curl_multi_await という
HHVM(C++)v方でレスポンスがWいエンドポイントがある栽に
Abortするバグがあった。
PHPのリクエスト、レスポンスのI尖とは`い、HHVMではレスポン
スを卦した瘁もこのv方がg佩されAけてしばらくすると鯛ちる咾
なっていた
このため、どのタイミングでHHVMがクラッシュするのかの委燐がW
れた???
どうしたか
BめてK双じゃない curl_exec を聞いました
THE END
倩ですKわりません。
匯稀この彜Bでファ`ストリリ`スをしました。
もちろんこの嶇鵑呂垢任望渦壊顎艶で烏御されてました
1/5に俐屎される
c++でg廾していた curl_multi_await をhackg廾に筝
1/5に俐屎される
c++でg廾していた curl_multi_await をhackg廾に筝
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;
}
だたし、F壓リリ`スされているHHVM ver3.24.3にはまだこの
筝は函りzまれていませんでした。
(☆3.25のブランチでは俐屎鬉秘ってます)
この}にIgみのHack喘Curlライブラリ恬ってあるので崔いてお
きます。
https://github.com/kubotak-is/hhcurl
この俐屎を根めて壅業リリ`ス
` その瘁
F壓ではHHVMはクラッシュすることなく圷櫃遍砲牌澆蟷悗辰討い
す。(屈ヶ埖殻業)
ブログでHHVMがよく鯛ちるといてる繁、 HHAsiocurl_exec が聞われ
ていないかご_Jを
弼?ありましたが、HHVM/HackはPHPの晒井議な湖じでもう富し侏
を鯉にしたい、K双をSにきたいといういを匐えてくれる措い冱
Zだと房います。
Try
thanks:)

More Related Content

堰温界一の粥壊霞稼界遺顎姻鉛で棒んだ三