kyototycoon /rpc/set で php curl が遅かった原因

追加問題発生。さてどうする。
apacheを介したときのphp+curlの挙動がおかしい問題です。
このままでは使えないので。。。いろいろ調べた結果

結論からになりますが、curl使うの辞めました〜
fsocketopenで自分でリクエストつくって流すだけです。
複雑な処理は何も無いので一瞬で完成。phpとcurlを弄った時間はムダでした。
速度には何の問題も無いです!

colenc=Uの件もphp+curlの問題だったようです。BもUも速いです。

===

↓直ったと思ったら、apacheを介していると挙動が違います。
↓php+curlのバージョンの問題とか何かの原因のようです。

結論から言うと colenc=U で urlencodeしたデータをpostしていたのが悪かったようで
colenc=Bのbase64_encodeにしたら問題なくなりました。

colenc=Uで使ってみたのですが

http://fallabs.com/blog-ja/promenade.cgi?id=99

を見直し、作者さんのサンプル通りにcolenc=Bに戻しました。

同じことやってるのにエンコードを変えるとcurlの挙動が変わっているようです。
curlのinfoの数値を

colenc=U

["url"]=> string(34) “http://192.168.0.22:50821/rpc/set”
["content_type"]=> string(25) “text/tab-separated-values”
["http_code"]=> int(200)
["header_size"]=> int(144)
["request_size"]=> int(161)
["filetime"]=> int(-1)
["ssl_verify_result"]=> int(0)
["redirect_count"]=> int(0)
["total_time"]=> float(1.001801)
["namelookup_time"]=> float(1.9E-5)
["connect_time"]=> float(9.1E-5)
["pretransfer_time"]=> float(9.2E-5)
["size_upload"]=> float(1048)
["size_download"]=> float(0)
["speed_download"]=> float(0)
["speed_upload"]=> float(1046)
["download_content_length"]=> float(0)
["upload_content_length"]=> float(1048)
["starttransfer_time"]=> float(1.001294)
["redirect_time"]=> float(0)
["certinfo"]=> array(0) { }

colenc=B

 ["url"]=>  string(34) “http://192.168.0.22:50821/rpc/set”
 ["content_type"]=>  string(25) “text/tab-separated-values”
 ["http_code"]=>  int(200)
 ["header_size"]=>  int(144)
["request_size"]=> int(1098)
["filetime"]=> int(-1)
["ssl_verify_result"]=> int(0)
["redirect_count"]=> int(0)
["total_time"]=> float(0.000504)
["namelookup_time"]=> float(2.1E-5)
["connect_time"]=> float(0.000141)
["pretransfer_time"]=> float(0.000143)
["size_upload"]=> float(960)
["size_download"]=> float(0)
["speed_download"]=> float(0)
["speed_upload"]=> float(1904761)
["download_content_length"]=> float(0)
["upload_content_length"]=> float(0)
["starttransfer_time"]=> float(0.000484)
["redirect_time"]=> float(0)
["certinfo"]=> array(0) { }

最初は遅いのですが、動作は正常に終了しています。何度やっても再現可能です。お試しください?

両方ともcurlでpostしているのに、base64_encodeしたデータは、size_upload 960 で upload_content_length が 0 です。
謎ですが、この辺が影響しているようです???

無事 1秒以上かかっていた starttransfer_timeが 0.000484秒になりました。

This entry was posted on 水曜日, 9月 26th, 2012 at 6:07 AM and is filed under Kyototycoon/cabinet, php. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。