タグ

ブックマーク / blog.yuyat.jp (4)

  • PHP/MySQL でレコードを N 件ずつバルクインサート | Born Too Late

    昨日の ParallelHttp の話に引き続き、PHP でのバッチ処理のパフォーマンス改善の話です。 あと、昨日と同じく PHP 5.2 で使えるライブラリを開発した話でもあります。 バルクインサートとは ひとことで言えば「複数のレコードをまとめてインサートすること」です。 例えば MySQL で言えば、 INSERT INTO `users` (`name`) VALUES ('foo'); INSERT INTO `users` (`name`) VALUES ('bar'); INSERT INTO `users` (`name`) VALUES ('baz'); ではなく INSERT INTO `users` (`name`) VALUES ('foo'), ('bar'), ('baz'); というようにやることです。 これで何が嬉しいかというと、サーバにクエリを投げてその結

    PHP/MySQL でレコードを N 件ずつバルクインサート | Born Too Late
  • PHP のコードパスを解析する CodePathAnalyzer を作った | Born Too Late

    レガシーコードと戦っていると、「このコードのどこをどう通ってこういう結果になってしまっているのか」がわからなくなることがあります。 初見でコードを理解する能力は、コードを読んできた経験が多ければ多いほど、向上するものだと思います。 とは言っても、構造化やモジュール化が適切でなく、スコープの長大なコードなどは、人間の限界を超えているものもあるでしょう。 ステップ実行のできる IDE などを使う、という選択もあると思いますが、僕は重厚な IDE を好みません。 もっと楽にできる方法で、コードパスを解析する方法があれば、ということで作ってみました。 yuya-takeyama/code_path_analyzer 元になっているのは、仕事の時にコード中にベタ書きした関数です。 Gist に公開したところはてブが 10 ぐらい付いたのと、次必要になったときにすぐ使えるようにしておきたかったので、ラ

    PHP のコードパスを解析する CodePathAnalyzer を作った | Born Too Late
  • PHP 5.2 で並列数を保ちつつ非同期 HTTP 処理 | Born Too Late

    最近は Admiral Sir Cloudesley Shovell というバンドの 1st フルアルバム Don't Hear It... Feat It をよく聴いています。 Sir Lord Baltimore のような、骨太なリフと、ブルージーでドラマ性もある楽曲が魅力のバンドですが、現在進行形で活動中のバンドです。 ストーナーロックとか好きな人は是非。 ここから題です。 あるところに、Web API を数十万回単位で叩きまくる、PHP で書かれたバッチプログラムがあったとしましょう。 処理件数が増えるごとに処理時間が増大するので、いつしか 1 日経っても終わらないようになってしまいました。 そのプログラムは HTTP リクエストを直列に行っていたので、それを並列化させれば何とかなるのではないか、と考えて作ったのが以下のライブラリ。 yuya-takeyama/parallel_

    PHP 5.2 で並列数を保ちつつ非同期 HTTP 処理 | Born Too Late
  • PHP カンファレンス 2011 で DSL と [] について LT してきた | Born Too Late

    また, 当日 Ustream で配信された動画はこちらにアーカイブされています. 動画中の一番最初がボクの発表です. Lightning Talk この LT では DSL のサンプルとして Paml というテンプレートエンジンを紹介しています. また, オチとして, [] で DSL だけじゃなく汎用言語も実装できる, ということで PHP で実装された Lisp ライクな言語 LisPHP を紹介しています. いずれも GitHub にリポジトリを公開しているので, 興味のある方はご覧ください. Paml LisPHP 結構ネタ的な要素も強いのですが, この発表でボクが割と真面目に主張したかったのは以下の点です. PHP 5.4 では [] が配列リテラルとして導入された PHP の array は他の言語と比べて特殊なデータ構造である その特性を DSL 的に活用することができる ス

    PHP カンファレンス 2011 で DSL と [] について LT してきた | Born Too Late
  • 1