タグ

ブックマーク / www.1x1.jp (19)

  • PHPからPostgreSQLに大量のデータを登録する

    PostgreSQLに大量のデータを登録する際はINSERTを使って一件づつ処理するより、COPYを使って一気に登録した方が実行速度が(かなり)速いです。 そこでPHPでもCOPY文を使ってみましょう。 pg_copy_fromを使う 登録するデータが配列に入っているならpg_copy_fromだけで一気に処理できます。 配列の1要素が1レコードに対応しています。1要素内では各カラムをデリミタ(デフォルトは”\t”)で連結します。 <?php $values = array(); $values&#91;&#93; = "1\tname1"; $values&#91;&#93; = "2\tname2"; $values&#91;&#93; = "3\tname3"; $db = pg_connect("dbname=hogedb"); pg_copy_from($db, 'table',

  • PhpStorm から Vagrant VM の PHP アプリケーションをリモートデバッグする(Web & CLI)

    Home > Laravel | PHP | PhpStorm | Vagrant > PhpStorm から Vagrant VM の PHP アプリケーションをリモートデバッグする(Web & CLI) PhpStorm から Vagrant で構築した VM の PHP アプリケーションをリモートデバッグする方法です。Web アプリケーションだけでなく、CLI アプリケーションでもリモートデバッグできるように設定していきます。 VM スペック 192.168.33.41 を private network で設定 PHP + Xdebug がインストール済み ホストと VM は、synced folder でディレクトリを共有(/path/to/src -> /share) 0. Xdebug によるリモートデバッグの仕組み リモートデバッグを設定する前に PhpStorm と Xd

  • Laravel の Queue で非同期処理を実装する(beanstalkd / IronMQ / SQS)

    Home > AWS | Laravel | PHP > Laravel の Queue で非同期処理を実装する(beanstalkd / IronMQ / SQS) Laravel で実装されている Queue について見てみました。 Laravel では Queue を使うことで、時間がかかる処理や、時間差で実行したい処理を非同期で実行することができます。 Laravel 4.2 の Queue では、以下の 5 つのキュードライバをサポートしています。 sync Beanstalkd Amazon SQS IronMQ Redis ここでは、sync、Beanstalkd、IronMQ、Amazon SQS について試してみました。 Laravel での設定 Laravel で Queue を使うには、app/config/queue.phpにて、利用するキューエンジンの選択、設定を

  • Vagrant 1.5 で追加された Rsync Synced Folder が良い

    Vagrant 1.5 がリリースされました。1.1 以来の big change ということで、目新しい機能が追加されています。 目玉はやはり Vagrant Share だと思うのですが、その他にも Web システムの開発に Vagrant を使っている人には嬉しい機能が追加されています。 その一つが Rsync Synced Folder です。 Vagrant には、ホストマシンとゲストマシンとでファイルを共有、同期する機能があります。 これにより、開発はホストマシンで行い、実行は LA(MP)P 環境であるゲストマシンで行うという、いいとこ取りができました。 この機能を実現する方法として、shared folder(VirtualBox の機能)や NFS を利用することができたのですが、これに rsync による同期が追加されました。 ホストマシンからゲストマシンへ rsync

  • vagrant-serverspec で TDD ライクにサーバ構築を行う

    Shin x blog Advent Calendar 2013 の 24 日目です。 先日リリースされた vagrant-serverspec を使って、テストドリブンなサーバ構築を行ってみました。 vagrant-serverspec は、サーバ、インフラの状態をテストするツール serverspec を Vagrant のプロビジョナとして実行できるプラグインです。これを使うことで、vagrant コマンドから、serverspec のテストを実行することができます。 詳しくは、@ryuzee さんの下記エントリを参照して下さい。 vagrant-serverspecを使ってプロビジョニング結果をテストする | Ryuzee.com 仕様 今回構築するサーバの仕様は下記です。PHP 5.5.x をインストールして、ビルトインサーバを起動するというものです。(※ちなみにビルトインサーバ

  • 開発現場で Docker をどこで使うか考えてみた

    Shin x blog Advent Calendar 2013 の 16 日目です。 最近話題の Docker 色々と触っています。 触ってみる中で、普段の開発現場でどのような用途に使えそうなのかを考えています。こうだ!という結論が出ているわけではないのですが、一度書き出してみます。 前提 Webシステムの開発現場を想定しています。 言語は普段使っている PHP ですが、内容にはあまり関係無いです。 開発機には Mac OSX を使っています。 検証環境(サンドボックス) まず一番に思いつくのが、検証環境としての利用です。Docker を使えば、OS のみがインストールされている状態のコンテナを手軽に作成できるので、そこでミドルウェアのインストール、設定などを自由に行い、検証が済んだら、破棄します。 OSX 環境では Docker は動かないので、Vagrant + VirtualBox

  • ざっくり分かる Vagrant 1.4 / Docker Provisioner

    Shin x blog Advent Calendar 2013 の 10 日目です。 Vagrant 1.4 がリリースされました。Docker Provisioner を中心に新機能をざっくりと見てみました。 ダウンロードページの変更 さあ、1.4 をダウンロードしよう、と今までのダウンロードページに行くと 1.4 のリンクがありません>< 新しいダウンロードページからダウンロードしましょう。 Download Vagrant – Vagrant Docker Provisioner Docker 対応として Docker Provisioner が追加されました。 このプロビジョナを使うと Docker 自体のインストールが自動で行われ(!)、その後、docker pull や docker run を実行することができます。 下記の Vagrantfile では Docker Pr

    okinaka
    okinaka 2013/12/11
    昔に比べるとずいぶんよくなったなぁ。以前はメジャーなバージョンアップは要注意だったけど、安心して使えてる。
  • 「Composer 再入門」を発表してきました( #KOF2013 )

    2013/11/8, 9に大阪南港で開催されたKOF(関西オープンフォーラム)2013にて「関西PHP勉強会」のセッションを行いました。 今回は、いまやPHPerの必須ともいうべきComposerをテーマにしました。その中で「Composer 再入門」を発表してきました。 Composer再入門 この発表では、Composer の基的な使い方を紹介しています。自分でライブラリを公開する際の内容は @slywalker さんが発表されています。 Composer を使うこと自体は簡単なので、基的なところさえ知っておけば、特に問題は無いと思います。 ただ、今回の発表や先日行った Vagrant ハンズオンの際に感じたのですが、ターミナル操作の経験が無い人には、取っ付きづらいツールかもしれません。Composer を使わなくても、ZIP ファイルを直接ダウンロードすれば、フレームワークやライ

    okinaka
    okinaka 2013/11/12
  • PHP開発環境のサンプルVagrantfile

    PHPカンファレンス2013でPHP開発環境をVagrantで作る発表を行ったのですが、具体的なVagrantfileが欲しいという声を頂いたので、GitHubに公開しました。 ご自身で構築するベースになれば良いと思うので、どう作れば良いの?と言う方は参考にしてみて下さい。 なお、このリポジトリの Vagrantfile は、開発PC内の VirtualBox 上で開発環境として動かすことを想定しています。セキュリティについては考慮されていないのでご注意下さい。 vagrant-lapp-sample https://github.com/shin1x1/vagrant-lapp-sample このリポジトリは、PHPアプリケーション(CakePHP)をイメージしています。構成は以下です。 CentOS 6.4 Apache 2.2 PHP 5.4 PostgreSQL 9.3 phpPg

  • Vagrant + VirtualBox で nfs を使って、synced_folder を速くする

    Home > Vagrant | 開発環境 > Vagrant + VirtualBox で nfs を使って、synced_folder を速くする Vagrant + VirtualBox で便利な synced_folder を nfs を使ってパフォーマンスを向上する方法です。 開発環境として Vagrant + VirtualBox を使う上で欠かせないのが synced_folder です。ホストとゲスト間でディレクトリを共有できるので、ホストで書いたコードをゲストですぐに実行することができます。 synced_folder はVirtualBox が持つ shared folders という機能をつかているのですが、代わりに nfs を使うことで、パフォーマンスを向上させることができます。 nfsd をホスト側で起動 synced_folder に nfs を利用するには、ホ

  • PHPソースをコーディング規約に合わせて修正してくれるPHP Coding Standard Fixer

    PHPソースをコーディング規約に合わせて修正してくれるツール「PHP Coding Standard Fixer」を試してみました。 PHPでコーディング規約チェックツールとしては PHP_CodeSniffer が有名です。PHP_CodeSniffer はソースをチェックして、問題点を指摘してくれるのですが、ソースの修正は自分で行う必要があります。 PHP Coding Standard Fixerは、コーディング規約チェックだけではなく、規約に従っていないソースを修正してくれるツールです。 PHP Coding Standard Fixerを使う インストール インストールは簡単で、githubで公開されている php-cs-fixer.phar ファイル をダウンロードしてくるだけです。 実行する ダウンロードしたphp-cs-fixer.pharファイルをphpコマンドで実行しま

    okinaka
    okinaka 2012/05/22
  • CakePHP における Mass Assignment 脆弱性対策

    Rails 界隈で話題の Mass Assignment 脆弱性を CakePHP で防ぐ方法です。 Github に Mass Assignment 脆弱性が発見されて、Rails 界隈で話題になっています。この問題自体は目新しいものではなく、Rails 自体の問題というより、Rails アプリケーションの作り方の問題ということで、以前から作る側が注意を払う必要がありました。 この Mass Assignment 脆弱性は、Rails を手に発展してきた CakePHP アプリケーションでも同様の問題が発生する可能性があります。知っている人には常識なのですが、まだ知らない人もいるかと思うので、CakePHPにおける対策方法を書いてみます。下記コードはCakePHP2系を想定していますが、考え方はCakePHP1系でも同じです。 Mass Assignment 脆弱性 CakePHP

  • 古くなったMacPortsを再インストール

    古くなったMacPortsを再インストールしました。 2年程前にインストールしたMacPorts。これまでもたまに selfupdate していた気はするのですが、久しぶりに selfupdate & upgrade outdated したらエラーで止まりまくりだったので、ここで心機一転再インストールしてみました。 1. MacPortsを削除 インストールしていた MacPorts を削除します。 /opt/local がそのまま残っていると、新しいMacPortsからソフトをインストールした際にエラーになる場合があるので、リネームしておきます。ここでは、/opt/local 以下の設定ファイルやデータを再利用したいのでリネームしていますが、不要であれば削除でも問題無いです。 $ sudo port deactivate active $ sudo port -f uninstall i

    okinaka
    okinaka 2011/06/20
  • CakePHPとnginx+memcachedで手軽にキャッシュを活用する

    nginx+memcachedがめちゃ気になったので試してみました。 元ネタは下記です。 A 53,900% speedup: Nginx, Drupal, and Memcache bring concurrency up and page load time way down | TechnoSophos nginxをリバースプロキシに利用した構成で、バックエンドの出力をmemcachedにキャッシュしておけば、次回リクエストではnginxがそのキャッシュを読み取ってそのまま出力してくれます。 つまりバックエンドにリクエストを経由させずにnginxから即出力するのでかなりの高速化が見込めるという優れものです。 リンク先ではバックエンドにDrupalを利用していたのですが、ここではCakePHPを利用してみます。 1. 全体構成 リバースプロキシにnginx(Port: 80)を使い、バ

    okinaka
    okinaka 2010/04/09
    nginx だけで完結出来ないのが残念なところ。
  • CakePHP DboSourceをPHP5らしく使う

    CakePHPではDBアクセスは通常Modelを介して行うので、直接DboSourceを利用する事は無さそうですが、SQL文を自分で構築する際など、意外と使う機会があります。 DboSourceは、通常以下のよう使用します。 <?php // $hogeをエスケープ $db =& ConnectionManager::getDataSource($this->useDbConfig); $db->value($hoge); ?> もちろんこれでも問題無いのですが、やや冗長な感じもあります。そこでPHP5で以下のように書いてみました。 <?php ConnectionManager::getDataSource($this->useDbConfig)->value($hoge); ?> 1文にまとまりました。ただ、まだ冗長なので、これをAppModelでまとめてみます。 <?php clas

  • CakePHP FormHelper#datetime()で年月日表示を変える

    CakePHP1.2で追加されたFormHelperには日時をプルダウンメニューで選択する機能があります。 <?php echo $form->datetime('hoge', 'YMD', 'NONE'); ?> これで年月日を選択できるのですが、デフォルトだと↓のように月が英語表現で表示されます。 そこで月を数字表現に変更する方法です。 datetimeメソッドはFormHelper#$optionsの値をプルダウンで表示するリストに使用します。(値が無ければデフォルト値を使用)よってこれを書き換えれば任意の値をリストに表示できます。 <?php // 月を数字へ $form->options['month'] = array(); for ($i = 1 ; $i <= 12 ; $i++) { $form->options['month'][$i] = sprintf("%02d"

  • CakePHP パフォーマンスが出ない時は、例えばフレームワークを避ける

    フレームワークを使ってパフォーマンスに問題があったため、Plain PHPで書き直したという話です。 先日受信したメールの内容を.forward経由でDBを保存するという処理を実装しました。まあ良くある処理なのですが、このシステムではWeb側をCakePHPで実装していたので、メール処理もCakePHPのCLI機能(cakeコマンド)を利用しました。 実際に動作してみて数件程度では問題無かったのですが、負荷試験として短時間に数百件、数千件のメールを受信させると、LAが80程度まで跳ね上がりました。処理自体を見直したり、不要なSQLをカットしたりしたのですが、それほど大きな効果はありませんでした。 これはフレームワークの起動に時間がかかっていると判断し、CakePHPを使わずベタなPHPスクリプトだけで実装してテストすると、同じ負荷をかけてもLAが3-4程度まで落ちました。 timeコマンド

    okinaka
    okinaka 2008/06/12
    db を直接操作する
  • PHPによる攻撃コードが出現--GIFファイルに隠される?

    セキュリティ研究者らは米国時間6月19日、PHPによって記述され、GIFファイルに埋め込まれた攻撃コードを大手の画像ホスティングサイトで発見した。SANS Internet Storm Centerへの投稿によると、この攻撃コードはファイルの先頭に正規の画像を配置することで監視の目をすり抜けたという。 PHPによる攻撃コードが出現–GIFファイルに隠される:ニュース – CNET Japan GIFファイルにPHPコードが隠されてたとしてもPHPとして実行されなきゃ問題無いような気が。 なんなんだろーと思って twitter でつぶやいてみると @koyhoge さんと@takesako さんからヒントを頂きました。 自分なりに理解すると、ようはGIFファイルにPHPコードが入ってるんじゃなくて、PHPファイルの先頭にGIFヘッダ+バイナリが入っていると考えれば良いんじゃかいかと。なのでア

    okinaka
    okinaka 2007/06/25
  • PHP4なスクリプトをPHP5へ移行する際に発生する7つの問題 | Shin x blog

    2007/11/13: 3.と4.が同じ内容となっていましたので、4.の内容を変更しました。 ここ最近PHP4.1.2で稼働していたシステムをPHP5.1.6へ移行しています。 移行の際に発生した問題とその対応をメモしておきます。 ちなみに全ての内容がPHP4->PHP5で必要なものではないです。PHP4も4.1/4.2/4.3/4.4の間でちょこちょこ変わっているので、一部の内容はPHP4間の移行でも修正が必要になります。またPHP4.4に適応しているスクリプトをPHP5へ移行するなら修正内容は少なくなります。 1.Notice: Only variable references should be returned by reference 「function &method()」と定義しているメソッドでスカラー値を返すと発生します。 <?php class Hoge { functi

    okinaka
    okinaka 2007/06/25
  • 1