明滅するプログラマの思索

WEBエンジニアとして勤務している一介の男が、日々気づいたことをまとめるブログです

PHP

composer を使おう

composer とは、PHPのライブラリを依存パッケージごと管理するツールです。 これまでにも PHP のライブラリツールとしては PEAR がありましたが、現在では composer でインストール可能なものはこちらで管理する流れが出来上がっています。 今回は今更ですが…

PHP で Yahoo!ID連携v2 の認証を行う

Yahoo!ID連携は現在 v2 と呼ばれるバージョンで OpenId 認証が可能です。 それまで使用されていた v1 は今年の3月以降、新規の登録が不可能となりました。 Yahoo!ID連携v1 は、PHPのSDKが用意されており、実装が楽になっていますが、v2 では Javascript SDK …

PHPのMediaInfoパッケージを利用してHLS用に動画分割する

HTTP Live Streaming を実装する際、もともとの動画ファイルを分割し、プレイリストファイル(m3u8)を作成する必要があります。 HLS(HTTP Live Streaming) を構築する - 明滅するプログラマの思索 で分割する流れをまとめてありますが、今回はこれをPHPで自動…

Apache ユーザに別のユーザとして処理を実行させる

Apacheで立てた Web サーバにリクエストを送り、それをトリガとしてサーバ上で操作を行う場合、その実行ユーザはデフォルトでは apache ユーザとなります。 これだと、そのファイルのユーザ・権限によっては、アクセス権がなく実行に失敗してしまうことが考…

Nginx のリバースプロキシを利用し PHP 処理を Apache で行う

Nginx のシェアが堅調に伸びているようです。 Apache と違い、静的なコンテンツを大量にさばくのに適した Web サーバですが、サーバサイドスクリプトを実行する場合はちょっとしたテクニックが必要となります。 PHP の場合、php-fpm を起動し UNIXドメインソ…

ディレクトリ内のファイルを一覧表示する

PHP

PHPを利用して、サーバ上の特定ディレクトリ内のファイルを一覧表示するスクリプトを書いてみます。 実装条件 ソフトウェア バージョン PHP 5.6.30

クラス内 static プロパティについてまとめ

PHP のクラスが持つプロパティ(メンバ変数)には、static 修飾子を付けることができます。

画像をHTMLに直接埋め込む方法

HTMLで画像を表示する場合、<img />タグを使用します。 このとき、画像のバイナリデータが取得できるなら、以下のように書くことができます。 EOF;

PHPで require_once / require を使わずにクラスをロードする

PHP でファイルを読み込む際 require_once や require を使うことになりますが、読み込むファイルが膨大になると大量の require_once / require を記述しなくてはいけなくなります。 spl_autoload_register() を使うと、読み込まれていないクラスをコールし…

確率による重みづけをしてn個のものを取り出す

X種類のフルーツ中からランダムにn種類取り出す場合、PHPなら mt_rand() などの関数を使えばすぐに実装可能です。 実装条件 ソフトウェア バージョン PHP 5.6.30

PHP でウィザード形式のページ遷移を実現する trait

Wizard とは ウィザードとは、対話形式で遷移を踏みつつ処理を進めさせるためのユーザインターフェイスのことです。 ウェブでは、複数ページにまたがるフォームなどで実装されています。 ウィザードを実装するためには、遷移途中の入力データや今どのページ…

ジェネレータを利用した MySQL データの抽出

DBテーブル上にレコードが大量にあり、これをプログラムでループさせながら処理したい、というケースは非常に多くあります。 この場合、大量にあるレコードを配列に格納することで、よく問題になるのが使用メモリの肥大化です。 PHP5.5以降で実装されたジェ…

HTTPレスポンスを返した後も処理を続ける方法

PHP

HTTPリクエストを受け取ったWEBサーバは、そのプロセスで処理をすべて実行した後にレスポンスを返却します。 この処理に時間がかかることが予想されるとき(たとえば30秒でタイムアウトするリクエストで40秒かかるとか)、プロセス内で別のプロセスを起動し…

クラスにメソッドを動的に追加する trait

PHP

実装済みのクラスに、あとからメソッドを動的に追加することができるようにします。 実装環境 ソフトウェア バージョン PHP 5.6.30 ※ ただし trait 自体は PHP5.4 以降で利用可能