タグ

ブックマーク / hnw.hatenablog.com (5)

  • PHP7はなぜ速いのか(zval編) - hnwの日記

    この記事はPHP Advent Calendar 2014の7日目です。 僕は先日のPHPカンファレンス2014でPHP7に関するLTをしました(参照:「PHPNGの動向」)。ただ、時間が限られていたこともあり、あまり踏み込んだ内容には触れませんでした。 稿ではLTの内容から深掘りし、zvalという内部的な構造体がどう変わるのか、性能面のメリットにフォーカスして解説してみます。 PHPをとりまく状況 まず最近のPHPの話題をおさらいしておきましょう。 これまでPHPには実用レベルの別実装が存在しない状態が続いていましたが、HHVMの登場で状況が変わってきました。HHVMはFacebookが開発しているPHP実行環境で、PHPより高速で互換性も高いのが特徴です。Facebookで実際に利用されているだけでなく、他の企業でも商用サービスで利用する事例が増えてきています。 そんな中、2014年

    PHP7はなぜ速いのか(zval編) - hnwの日記
    faibou
    faibou 2014/12/07
  • PHPでHTTPの並行ダウンロードを実現する(Guzzle編) - hnwの日記

    PHPで最近注目のHTTPクライアントライブラリにGuzzleがあります。日での知名度はまだまだという印象ですが、かなり高機能かつ真面目にメンテナンスされている印象で、今後のデファクトスタンダードになりうるライブラリと言えるでしょう。 稿ではこのGuzzleを使ってWebサーバから並行にダウンロードする方法を紹介します。Webブラウザのように同時に複数コネクションを管理しながらKeep-Aliveでコネクションを使い回しますので、下手なコードで実現するより接続先Webサーバにも優しいはずです。 Guzzleの特徴 まずは、Guzzleについて僕が特徴的だと思う点を紹介します。 パッと見でわかりやすいインターフェース cURLは必須ではないがデフォルトでcURLを使う cURLの無い環境がありうるので、cURL無しでも動くのは嬉しい cURLのわかりにくいインターフェースを隠してくれるの

    PHPでHTTPの並行ダウンロードを実現する(Guzzle編) - hnwの日記
    faibou
    faibou 2014/08/24
  • WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記

    新年あけましておめでとうございます。今年もボチボチやっていきます。 稿ではPHP製のWebスクレイピングライブラリGoutteを紹介します。 Goutte(グット)とは Goutteは必要十分な機能を持ったWebスクレイピングライブラリです。そもそもWebスクレイピングというのは、外部Webページから必要なデータを取ってくるくらいの意味です。つまり、GoutteはWebスクレイピングを簡単に行う道具だと考えればいいでしょう。 具体的には、GoutteはWebクローラとHTMLパーサを組み合わせたようなものです。Cookieやフォームの扱いなどWebブラウザとしての機能は一通り揃っていますし、CSS風の要素指定もできるなど、機能面では他のライブラリと遜色ないように感じます。 さらに僕個人がGoutteに期待している点は、安定性とロングサポートです。Goutteは主要機能をSymfony2お

    WebスクレイピングライブラリGoutteで遊んでみる - hnwの日記
  • PHPMatsuriに参加してきました - hnwの日記

    10月2日から3日にかけて、PHPMatsuriに参加してきました。1日目の午前中は大部屋でセッション、午後からは部屋を区切ってセッション+ワークショップの2並列、1日目の夜から2日目の昼まで各自ハック、2日目の午後からハックしたものについてのLT大会、というような流れでした。 事前情報をほとんどチェックできておらず、宿つきのハック大会+ごく小規模なセッションというくらいの認識で行ったのですが、とんでもない勘違いでした。セッションだけでも非常に充実していて、裏側のワークショップも非常に楽しそうで、それだけでヘロヘロなのに深夜までハックする人が多数という、ひょっとしたら通常の4日分くらいが詰めこまれた2日間でした。 僕はずっとセッションを聞いていたのですが、Nate Abeleの「Practical PHP 5.3」とJoel Perras&Nate Abeleの「フレームワーク嫌いの人の為

    PHPMatsuriに参加してきました - hnwの日記
  • PHPのcopy関数がファイルサイズ分のメモリを消費する件の対策 - hnwの日記

    補足(2010/08/24 15:00):rename関数について言えば、同一ファイルシステム上であればrenameシステムコールを利用するのでこの問題は起こりません。さらに蛇足ですが、ファイルシステムをまたがってrename関数を利用するとコピーしてから削除することになり、アトミック性を保証できないため、障害の原因にならないかどうかの検討が必要だと思います。 「AKIBA de: PHPのrename()関数はファイルシステム間で使うとメモリをバカいする」で指摘されている通り、PHPのcopy関数やファイルシステムをまたがってrename関数を使う場合に、PHPがファイルサイズと同じ大きさのメモリを消費してしまいます。環境によっては再現しないかもしれませんが、僕の手元のMacOSX 10.5+PHP5.3.3環境では再現しました。 <?php // 「dd if=/dev/urando

    PHPのcopy関数がファイルサイズ分のメモリを消費する件の対策 - hnwの日記
    faibou
    faibou 2010/08/25
  • 1