PHP5

PHP5系での開発において、細かいところに手が届く情報をまとめています。

nginx

nginxで高負荷時に「upstream timed out (110: Connection timed out) 」とかエラーがでる

■nginxで稀にエラーが発生して500系のエラーがでる 以下のようなエラーメッセージが吐き出されていました。APIサーバで発生していたので、結構たくさんのアクセス(1秒間に1500~2000アクセス)あったときに本当に稀に出ていました。...
PHP5

phpのjson_encodeがFALSEを戻すときはUTF-8の文字化けの可能性

■json_encode関数を使って、jsonに変換していた時のエラー 何でか稀にFALSEが戻るときが有ったのです。調査してみた結果、どうもUTF-8でも変なゴミバイトが混じっていると動かないときがあるっぽいですね。以下のように、mb_...
PHP5

PHPのcurlからproxy経由でサイトアクセスをするサンプルを書いた

PHPのcurl関数たちはとても便利です。PHPのプログラム上からサイトやAPIにアクセスするためには必須の関数となっています。今回は、curlでサイトやAPIに接続するときにproxyを経由して通信を行うサンプルを紹介します。 ■サンプ...
PHP5

SublimeText3でCakePHPのctpファイルのシンタックスハイライトを関連付ける

PHPの開発ではSublimeText3を利用しています。で、このシンタックスハイライトがあると、タグの種類や、変数などが色付けされて表示されます。ですが、デフォルトの設定だとCakePHPのctpファイルが【Plane Text】と判断さ...
PHP5

【PHP関数】レーベンシュタイン距離を求める関数の日本語対応

■レーベンシュタイン距離とは このコピペチェックツールで利用しているアルゴリズムです。編集距離とも呼ばれています。2つの文字列を何回変更すると同じ文字列になるかを求めるアルゴリズムです。 レーベンシュタイン距離は数値が小さいほど同じ...
PHP5

PHPスクリプトからcURLを使ってCookieのやり取りをするサンプル

PHPのcURLを使ってウェブサイトにアクセスする方法を以前にいくつか紹介しました。 ■CURL_MULTIでPHPから並列アクセスを実現するサンプルを書いた ■PHPでCURLを使ったウェブアクセスのサンプルコード 今回はc...
PHP5

【PHP】データ内に改行のあるCSVの処理方法

こちらの記事でPHPでのCSVファイルのダウンロードのサンプルを書きました。この記事では、CSVファイルの読み込みのサンプルを紹介します。 ■特徴 SplFileObjectを利用しているため、エクセルで読み込みできる形式のCSVを読み...
PHP5

curl_multiでPHPから並列アクセスを実現するサンプルを書いた

PHPでは並列処理を実現する機能は基本的にありません。しかし、cURLを複数同時に実行するcurl_multiを利用すれば並列処理が一定可能です。並列して実行できるのでAPIへ効率よくアクセスすることが可能になります。 ■並列にサ...
PHP5

【PHP】preg_splitの文字化けを回避する

カンマや読点で文字列を分割するときに、preg_splitを使っています。正規表現で一致した部分で文字列を分割してくれる便利な関数です。この関数ですが、文字化けをすることがあります。 ■文字化けする記述 下記のような記述だと、文...
PHP5

PHPからmongodbへ接続するまでの手順

■PHPからmongodbへ接続するまでの手順 PHPからmongodbにアクセスできるようにするための手順を紹介します。mongodb本体のインストール方法は【YUMでmongoDBをインストールする】を参考にしてください。 ...
PHP5

curlを使ってPHPのプログラム上から対象サイトへアクセスするサンプル

PHPでCurlを使ったウェブサイトへのアクセスのサンプルです。いつもすぐに忘れてしまうので、書き残しておきます。こちらの記事でcurl_multiによる並列アクセスのサンプルについても書いています。よろしければ、併せて確認してみてください...
PHP5

PHPで指定ディレクトリ以下のファイル一覧を取得する

PHPで指定したディレクトリの以下のファイル一覧を取得するサンプルです。RecursiveDirectoryIteratorを利用しているので、非常に簡単にファイル一覧を取得することができます。こちらで紹介している、ZIPファイルでアップロ...
PHP5

PHPのプログラム上でZIPファイルを展開する方法

PHPでZIPを展開するサンプルです。ZIPファイルでアップロードした内容をサーバ上で処理するときなどに利用できるかと思います。パスワードのないZIPにのみ対応しています。 /tmp直下にランダムな名前を生成して、そこに対して...
PHP5

【PHP】誰にでも簡単に使える【CSVをダウンロードさせるサンプル】を書いた

今でもCSV形式でダウンロードさせるシステムは多いと思います。よく使うのでサンプルを書きました。 こちらにCSVを読み込むサンプルも書きました。併せて参考にしてみてください。 ■このサンプルの特徴 ▼エクセルで開い...
PHP5

phpで配列に入っている全要素に対してtrimをする

配列に入っている要素に対してtrimをする方法です。POSTやGETされてきたデータに対してtrimをすることで、よりサービスの品質が上がると思います。ループをして1つずつtrimをしてもいいのですが、array_mapを利用すれば一行で配...
PHP5

PHPで◯日後、◯日前など日付の加減算をする

PHPで日付の加減算をするサンプルです。よく忘れるので、書いておきます。date関数とstrtotime関数を組み合わせて実装します。 // 現在日付から○日前 date("Y/m/d", strtotime("-1 day" ));...
PHP5

PHPで配列にはいっているデータのうち、空っぽのものだけ削除する

配列にはいっているデータのうち、空っぽのデータを削除する方法です。以下のようにarray_filterを利用します。 $list = array_filter($list, 'strlen');
PHP5

PHPで配列にはいっているデータに対してtrimを適用する

PHPで配列にはいっている情報に対して、一括でtirmをしたい場合があります。POSTされてきたデータ等ですね。 以下のように指定すると、$listにはいっている情報に対してtrimを実行してくれます。trimの部分は別の関数でも大丈...
PHP5

PHPで$_FILESが空っぽのときの主な原因

特に何かエラーがでているわけでもないのに、$_FILESの中身が空っぽになってしまった時の大体の原因です。 ■php.iniの容量制限設定に問題があることが多い post_max_sizeとupload_max_filesize の上限...
PHP5

phpの閉じタグ問題

PHPのプログラムを書くとき、一般的に以下のように記述をします。 <?php class Hogehoge { ここにファンクション一覧 } で、今回問題となるのが、最後に?>をつけて閉じるか閉...