php - よく使う関数 - その他

 
1. get_browser ブラウザの機能を取得する
2. memory_get_usage PHP に割り当てられたメモリの量を調べる

1. get_browser ブラウザの機能を取得する


mixed get_browser ([ string $user_agent [, bool $return_array = false ]] )
 この関数はブラウザの機能を取得するのですが、取得先は browscap.ini というファイルになります。  browscap.ini を取得して、php.ini にそのファイルの取得先を記述するのですがその手順については「FreeBSD - メンテナンス・トラブルシュート - php」をご参照ください。  設定を行ったうえで
<?php
print($_SERVER['HTTP_USER_AGENT'] . "\n");

$browser = get_browser(null, true);
print_r($browser);
?>


 というソースを書いて実行すると下記の結果が得られます(オプションの browscap.ini を使用)。

CCBot/2.0 (https://commoncrawl.org/faq/)
Array
(
    [browser_name_regex] => ~^ccbot/2\.0.*$~
    [browser_name_pattern] => CCBot/2.0*
    [parent] => CCBot
    [version] => 2.0
    [majorver] => 2
    [comment] => CCBot
    [browser] => CCBot
    [browser_type] => Bot/Crawler
    [browser_bits] => 0
    [browser_maker] => CommonCrawl Foundation
    [platform_bits] => 0
    [crawler] => 1
    [cssversion] => 0
    [aolversion] => 0
    [browser_modus] => unknown
    [minorver] => 0
    [platform] => unknown
    [platform_version] => unknown
    [platform_description] => unknown
    [platform_maker] => unknown
    [alpha] => 
    [beta] => 
    [win16] => 
    [win32] => 
    [win64] => 
    [frames] => 
    [iframes] => 
    [tables] => 
    [cookies] => 
    [backgroundsounds] => 
    [javascript] => 
    [vbscript] => 
    [javaapplets] => 
    [activexcontrols] => 
    [ismobiledevice] => 
    [istablet] => 
    [issyndicationreader] => 
    [isfake] => 
    [isanonymized] => 
    [ismodified] => 
    [device_name] => unknown
    [device_maker] => unknown
    [device_type] => unknown
    [device_pointing_method] => unknown
    [device_code_name] => unknown
    [device_brand_name] => unknown
    [renderingengine_name] => unknown
    [renderingengine_version] => unknown
    [renderingengine_description] => unknown
    [renderingengine_maker] => unknown
)


2. memory_get_usage PHP に割り当てられたメモリの量を調べる

 memory_get_usage という関数で表題の内容が調べられるらしい。

int memory_get_usage ([ bool $real_usage = FALSE ] )
 引数に true を与えると、システムが割り当てた実際のメモリの大きさ (未使用のページも含むもの) を取得するそうな。  引数を省略したり false を与えると使用したモリのみを報告するそうな。
<?php

class myClass
{
	private $work = NULL;

	public function __construct()
	{
		global $work;

		for ($i=0; $i<10000; $i++)
		{
			$work .= ' ';
		}
	}
}

print("割り当てメモリ[".number_format(memory_get_usage(true))."] 使用メモリ[".number_format(memory_get_usage())."]\n");

$myclass = new myClass();

print("割り当てメモリ[".number_format(memory_get_usage(true))."] 使用メモリ[".number_format(memory_get_usage())."]\n");

unset($myclass);

print("割り当てメモリ[".number_format(memory_get_usage(true))."] 使用メモリ[".number_format(memory_get_usage())."]\n");
?>

 これを実行すると以下の結果が得られます。

割り当てメモリ[2,097,152] 使用メモリ[389,424]
割り当てメモリ[2,097,152] 使用メモリ[401,792]
割り当てメモリ[2,097,152] 使用メモリ[401,736]