メモ。
// 出力バッファをオフにする
ob_end_flush();
// 例えば下記のような時間のかかる処理があったとする
for($i = 0; $i < 1000; $i++) {
// echoで出力したものを
echo '=>';
// flushでブラウザに出力する
flush();
usleep(10000);
}
メモ。
// 出力バッファをオフにする
ob_end_flush();
// 例えば下記のような時間のかかる処理があったとする
for($i = 0; $i < 1000; $i++) {
// echoで出力したものを
echo '=>';
// flushでブラウザに出力する
flush();
usleep(10000);
}
ハマったのでめも。
まず関数定義
bool empty ( mixed $var )
ここで引数の$varに注意。PHP5.5より前のバージョンでは引数として変数しか受け取ることができない。
そのため式や関数をついでに評価してもらおうとすると、エラーで処理が止まってしまう。
下記動作する例。
$var = '12345'; $var = (int)$var; $res = empty($var); var_dump($res); ↓ bool(false)
下記エラーとなる例
$var = '12345'; $res = empty((int)$var); var_dump($res); ↓ syntax error, unexpected T_INT_CAST
めも。
// パスワードの長さを指定
$length = 6;
// 使用する文字を定義
$strList = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$splitStr = str_split($strList);
// パスワードを生成
for($i = 0; $i < $length; $i++) {
$pwd[] = $splitStr[array_rand($splitStr, 1)];
}
$res = implode('', $pwd);
var_dump($res);
↓
string(6) "dLLiTU"
めも。
$tmpFilePath = tempnam(sys_get_temp_dir(), 'tmp'); var_dump($tmpFilePath); ↓ string(14) "/tmp/tmpe4zqQd"
ちなみに第1引数のディレクトリが存在しなかった場合は自動的にPHPが用いる一時ファイル保存ディレクトリが設定されるため、nullを渡しても動作する。
第2引数のファイル名プレフィックスは指定しないと動作しないので注意。
めも。
$tmpDir = sys_get_temp_dir(); var_dump($tmpDir); ↓ string(4) "/tmp"
めも。
// zipクラスのインスタンスを生成
$zip = new ZipArchive();
// 出力時のファイル名
$outFileName = 'hoge.zip';
// 作業ファイルパスを生成
$tmpFilePath = tempnam(sys_get_temp_dir(), 'tmp');
// 作業ファイルをオープン
$result = $zip->open($tmpFilePath, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if($result !== true) {
return false;
}
// 圧縮するファイルを定義
$addFilePath = file_get_contents('/path/to/file.ext');
$addFileName = 'file.ext';
// zipファイルに追加(繰り返せば複数ファイル追加可能)
$zip->addFromString($addFileName , $addFilePath);
// ストリームを閉じる
$zip->close();
// ブラウザに出力
header('Content-Type: application/octet-stream; name="'.$outFileName.'"');
header('Content-Disposition: attachment; filename="'.$outFileName.'"');
header('Content-Length: '.filesize($tmpFilePath));
echo readfile($tmpFilePath);
// 一時ファイルを削除
unlink($tmpFilePath);
die();
メモ。
大前提としてphp-gdのライブラリが必須。※image関数を用いるため。
まず下記サイトよりライブラリをダウンロード
http://pear.php.net/package/Image_QRCode/download
ダウンロードしたファイルを解凍し、下記ディレクトリをサーバーにアップロード
/data /Image /imagedata
下記ファイルをスクリプト中で読み込む
require_once('/Image/QRCode.php');
※「/data」や「/imagedata」内のファイルをQRCode.phpから参照出来るように若干修正が必要な場合あり。
準備が整ったら下記のようにして使う。
$url = 'http://www.yahoo.co.jp';
// QRコードを生成
$qr = new Image_QRCode();
$image = $qr->makeCode(htmlspecialchars($url, ENT_QUOTES), array('output_type' => 'return'));
ここでは第3引数を渡しているが、もし渡さなかった場合はその場でQRコードがブラウザに出力される。
output_typeにreturnを指定してやると関数が画像リソースを返してくれるので、あとはバッファに溜め込み変数で受け取ったり、他の画像関数に投げたり自分で好きに調理することが可能となる。
めも。
$image = imagecreatetruecolor(120, 20); ob_start(); imagejpeg($image); $imageData = ob_get_contents(); ob_end_clean(); $base64 = base64_encode($imageData);
といった具合にob系の関数を駆使すると実現可能。