PHP5系での開発において、細かいところに手が届く情報をまとめています。
nginxで高負荷時に「upstream timed out (110: Connection timed out) 」とかエラーがでる
■nginxで稀にエラーが発生して500系のエラーがでる
以下のようなエラーメッセージが吐き出されていました。APIサーバで発生していたので、結構たくさんのアクセス(1秒間に1500~2000アクセス)あったときに本当に稀に出ていました。
...
phpのjson_encodeがFALSEを戻すときはUTF-8の文字化けの可能性
json_encode関数を使って、jsonに変換していた時のエラー
何でか稀にFALSEが戻るときが有ったのです。調査してみた結果、どうもUTF-8でも変なゴミバイトが混じっていると動かないときがあるっぽいですね。以下のように、mb_再度...
PHPのcurlからproxy経由でサイトアクセスをするサンプルを書いた
PHPのcurl関数たちはとても便利です。PHPのプログラム上からサイトやAPIにアクセスするためには必須の関数となっています。今回は、curlでサイトやAPIに接続するときにproxyを経由して通信を行うサンプルを紹介します。
■サンプル...
SublimeText3でCakePHPのctpファイルのシンタックスハイライトを関連付ける
PHPの開発ではSublimeText3を利用しています。で、このシンタックスハイライトがあると、タグの種類や、変数などが色付けされて表示されます。ですが、デフォルトの設定だとCakePHPのctpファイルが【Plane Text】と判断さ...
【PHP関数】レーベンシュタイン距離を求める関数の日本語対応
■レーベンシュタイン距離とは
このコピペチェックツールで利用しているアルゴリズムです。編集距離とも呼ばれています。2つの文字列を何回変更すると同じ文字列になるかを求めるアルゴリズムです。
レーベンシュタイン距離は数値が小さいほど同じような...
PHPスクリプトからcURLを使ってCookieのやり取りをするサンプル
PHPのcURLを使ってウェブサイトにアクセスする方法を以前にいくつか紹介しました。
■CURL_MULTIでPHPから並列アクセスを実現するサンプルを書いた
■PHPでCURLを使ったウェブアクセスのサンプルコード
今回はcURLを使...
【PHP】データ内に改行のあるCSVの処理方法
こちらの記事でPHPでのCSVファイルのダウンロードのサンプルを書きました。この記事では、CSVファイルの読み込みのサンプルを紹介します。
■特徴
SplFileObjectを利用しているため、エクセルで読み込みできる形式のCSVを読み込み...
curl_multiでPHPから並列アクセスを実現するサンプルを書いた
PHPでは並列処理を実現する機能は基本的にありません。しかし、cURLを複数同時に実行するcurl_multiを利用すれば並列処理が一定可能です。並列して実行できるのでAPIへ効率よくアクセスすることが可能になります。
■並列にサイトに...
【PHP】preg_splitの文字化けを回避する
カンマや読点で文字列を分割するときに、preg_splitを使っています。正規表現で一致した部分で文字列を分割してくれる便利な関数です。この関数ですが、文字化けをすることがあります。
■文字化けする記述
下記のような記述だと、文字化けし...
PHPからmongodbへ接続するまでの手順
■PHPからmongodbへ接続するまでの手順
PHPからmongodbにアクセスできるようにするための手順を紹介します。mongodb本体のインストール方法は【YUMでmongoDBをインストールする】を参考にしてください。
1.コン...
curlを使ってPHPのプログラム上から対象サイトへアクセスするサンプル
PHPでCurlを使ったウェブサイトへのアクセスのサンプルです。いつもすぐに忘れてしまうので、書き残しておきます。こちらの記事でcurl_multiによる並列アクセスのサンプルについても書いています。よろしければ、併せて確認してみてください...
PHPで指定ディレクトリ以下のファイル一覧を取得する
PHPで指定したディレクトリの以下のファイル一覧を取得するサンプルです。RecursiveDirectoryIteratorを利用しているので、非常に簡単にファイル一覧を取得することができます。こちらで紹介している、ZIPファイルでアップロ...
PHPのプログラム上でZIPファイルを展開する方法
PHPでZIPを展開するサンプルです。ZIPファイルでアップロードした内容をサーバ上で処理するときなどに利用できるかと思います。パスワードのないZIPにのみ対応しています。
/tmp直下にランダムな名前を生成して、そこに対してzipを...
【PHP】誰にでも簡単に使える【CSVをダウンロードさせるサンプル】を書いた
今でもCSV形式でダウンロードさせるシステムは多いと思います。よく使うのでサンプルを書きました。
こちらにCSVを読み込むサンプルも書きました。併せて参考にしてみてください。
■このサンプルの特徴
▼エクセルで開いても文字化けしない
...
phpで配列に入っている全要素に対してtrimをする
配列に入っている要素に対してtrimをする方法です。POSTやGETされてきたデータに対してtrimをすることで、よりサービスの品質が上がると思います。ループをして1つずつtrimをしてもいいのですが、array_mapを利用すれば一行で配...
PHPで◯日後、◯日前など日付の加減算をする
PHPで日付の加減算をするサンプルです。よく忘れるので、書いておきます。date関数とstrtotime関数を組み合わせて実装します。
// 現在日付から○日前
date("Y/m/d", strtotime("-1 day" )); ...
PHPで配列にはいっているデータのうち、空っぽのものだけ削除する
配列にはいっているデータのうち、空っぽのデータを削除する方法です。以下のようにarray_filterを利用します。
$list = array_filter($list, 'strlen');
PHPで配列にはいっているデータに対してtrimを適用する
PHPで配列にはいっている情報に対して、一括でtirmをしたい場合があります。POSTされてきたデータ等ですね。
以下のように指定すると、$listにはいっている情報に対してtrimを実行してくれます。trimの部分は別の関数でも大丈夫で...
PHPで$_FILESが空っぽのときの主な原因
特に何かエラーがでているわけでもないのに、$_FILESの中身が空っぽになってしまった時の大体の原因です。
■php.iniの容量制限設定に問題があることが多い
post_max_sizeとupload_max_filesize の上限値に...
phpの閉じタグ問題
PHPのプログラムを書くとき、一般的に以下のように記述をします。
<?php
class Hogehoge {
ここにファンクション一覧
}
で、今回問題となるのが、最後に?>をつけて閉じるか閉じないか、という話です。
■?>を...