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

クラウディア 
1. get_browser ブラウザの機能を取得する
2. memory_get_usage PHP に割り当てられたメモリの量を調べる
3. parse_url URL を解釈し、その構成要素を返す

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 を使用)。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.175 Safari/537.36
Array
(
    [browser_name_regex] => ~^mozilla/5\.0 \(.*windows nt 10\.0.*win64. x64.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*chrome/.* safari/.*$~
    [browser_name_pattern] => Mozilla/5.0 (*Windows NT 10.0*Win64? x64*)*applewebkit*(*khtml*like*gecko*)*Chrome/* Safari/*
    [parent] => Chrome Generic
    [browser_bits] => 64
    [platform] => Win10
    [platform_version] => 10.0
    [platform_description] => Windows 10
    [platform_bits] => 64
    [platform_maker] => Microsoft Corporation
    [win64] => 1
    [comment] => Chrome Generic
    [browser] => Chrome
    [browser_type] => Browser
    [browser_maker] => Google Inc
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [javascript] => 1
    [cssversion] => 3
    [aolversion] => 0
    [device_name] => Windows Desktop
    [device_type] => Desktop
    [device_pointing_method] => mouse
    [device_code_name] => Windows Desktop
    [renderingengine_name] => Blink
    [renderingengine_description] => a WebKit Fork by Google
    [renderingengine_maker] => Google Inc
    [browser_modus] => unknown
    [version] => 0.0
    [majorver] => 0
    [minorver] => 0
    [alpha] =>
    [beta] =>
    [win16] =>
    [win32] =>
    [backgroundsounds] =>
    [vbscript] =>
    [javaapplets] =>
    [activexcontrols] =>
    [ismobiledevice] =>
    [istablet] =>
    [issyndicationreader] =>
    [crawler] =>
    [isfake] =>
    [isanonymized] =>
    [ismodified] =>
    [device_maker] => unknown
    [device_brand_name] => unknown
    [renderingengine_version] => 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] 使用メモリ[345,624]
割り当てメモリ[2,097,152] 使用メモリ[358,032]
割り当てメモリ[2,097,152] 使用メモリ[357,976]

3. parse_url URL を解釈し、その構成要素を返す

 マニュアルは、「PHP: parse_url - Manual」です。  「Laravel」で

@inject('request', 'Illuminate\Http\Request')
 を書いておいて

$request->url();
 と混ぜて使うと大変便利。  「Laravel」内で、このサイトで、ここに

@php
$purl = parse_url($request->url());

print_r($purl);
@endphp
 と書けば、下記のように出力されます。

Array
(
    [scheme] => http
    [host] => freebsd.sing.ne.jp
    [path] => /lang/php/03/14.html
)
earthcar(アースカー)
5G CONNECT