PHPで割り当てメモリ量を取得するには、memory_get_usage関数を利用できます。 この関数には、パラメータとして$real_usageを指定できるようになっており、 これを TRUE に設定すると、システムが割り当てた実際のメモリの大きさを取得します。 省略したり FALSE を設定したりすると、 emalloc() が使用するメモリのみを報告します。 とあるのですが、「システムが割り当てた実際のメモリの大きさ」と、「emalloc()が使用するメモリ」の違いがよくわかりません。 検索してみたところ、以下を見つけました。 http://stackoverflow.com/questions/2290611/tracking-memory-usage-in-php 回答によると、PHPのメモリマネージャは、メモリを確保する際、アプリケーションが必要とするメモリをその都度mallo
とりあえ図。 ソース。 環境。 LH-MAIN /tmp/test% uname -a Linux LH-MAIN 3.2.8-1-ARCH #1 SMP PREEMPT Mon Feb 27 21:51:46 CET 2012 x86_64 AMD Phenom(tm) II X4 940 Processor AuthenticAMD GNU/Linux LH-MAIN /tmp/test% php --version PHP 5.3.10 with Suhosin-Patch (cli) (built: Feb 6 2012 19:18:12) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies LH-MAIN /tmp/test% cat
*1 あーっと.はじめにいっておくと,すべてのマニュアルをちゃんと読んでいて関数の使い方を間違っていなかった人には関係ない話です. が,意外とハマるんじゃないかと思うのでメモ. どういう問題が発生したか <?php function hoge(&$hoge) { var_dump($hoge); } $a = 1; hoge($a); call_user_func_array('hoge', array($a)); このコード,どういう実行結果が期待されるかというと, int(1) int(1)です. call_user_func_array の第二引数は,関数に渡したい値を配列で指定するものなので,これでOK.PHP 5.2 では,上記の結果が得られます. ところが,PHP 5.3 では,以下のエラーが出ます. int(1) Warning: Parameter 1 to hoge()
ある条件でソートされているIDのリストを与えられて、なんとなく近い範囲でマッチングさせたいという要件があった。配列からの任意の要素の取り出しは O(n) だけど、末尾や末尾から固定した範囲の要素に限って言えば O(1) なので、後ろの方からマッチングさせながら要素を取り出していけば O(n) でマッチングできるはず。 なんにも難しいことは無い話で、 Python で書けばこうなる。 list.pop() が末尾からのインデックス (-1 が最後の要素を表す) を許すのが地味に便利だ。 # coding: utf-8 def match(seq, r=100): from random import randint # 奇数個の時に先頭周辺の要素がボッチになるのが嫌なら、先に後ろの方の # 要素を取り除いて偶数にしておくこと. while len(seq) >= 2: # 引数を省略すると末
■i18n入門を書こうかと どうも、鹿島和郎(かしまかずお)です。ワールドカップの観戦やら仕事やらで忙しくて1カ月以上ご無沙汰してしまいました。 さて、前回のコラムで少し予告したとおり、今回は少し技術的なことを書こうかと思います。ITエンジニアを名乗っておきながら、今まで技術的な話を一度もしていないのもどうかと思いますので。 そんな記念すべき技術ネタ第1弾は「i18n」です。 ○i18nとL10n i18nってそもそも何なんでしょう。似たような単語にL10nなんてのもありますし。ご存知の方も多いと思いますが、i18nはInternationalizationの略で、日本語では「国際化」と訳します。それに対しL10nはLocalizationの略で、日本語ではカタカナ英語でローカライズ、ローカライゼーションと言われることが多いかと思います。 どう違うのかはWebにいろいろ情報がありますので詳
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
I wrote the following to see if a submitted URL has a valid http response code and also if it responds quickly. Use the code like this: <?php $is_ok = http_response($url); // returns true only if http response code < 400 ?> The second argument is optional, and it allows you to check for a specific response code <?php http_response($url,'400'); // returns true if http status is 400 ?> The third all
while ( $term = array_shift($terms) ) $_terms[] = $term->name; get_terms() in wp-includes/taxonomy.php タームオブジェクトの配列から必要な値(上記ではターム名)のみを配列に入れています。array_shift() でオブジェクトを順に取得しつつ while の条件式にしているところがカッコイイですね。カスタム投稿タイプオブジェクトを取得して slug => label の配列を作る時などにも便利な書き方です。WordPress Coding Standards 的に大丈夫なのかな?と思いましたがセーフみたいです。 試しに速度を計測してみたところ、普通に foreach でループさせた方が速かったです。このコはカッコだけでした、ぐぬぬ。 function __construct( $mana
phpでssh2を使えるようにpecl ssh2をインストールする
PHPでssh2を使う必要が出てきた。 方法としては、PECL::ssh2をインストールしておけばよいらしい。 依存ライブラリとして、libssh2が必要なので、yumにてlibssh2をインストールしておく。 libssh2-develはいらないかもしれない。 yum -y install libssh2 libssh2-devel その後、peclコマンドでssh2拡張をインストールする。 pecl install ssh2 downloading ssh2-0.11.0.tgz ... Starting to download ssh2-0.11.0.tgz (22,884 bytes) ........done: 22,884 bytes 5 source files, building running: phpize Configuring for: PHP Api Versio
2013-10-17 yumでphp5.5をインストールする方法 WEB 技術 PHP ターミナル Apache 2013-10-17 php5.5をインストールしてApacheのモジュールとして使いたかったのでメモyumのデフォルトのリポジトリからだと,php5.3しかインストールできないそこで,リポジトリを追加するCentOS5だと, rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm CentOS6だと, rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm リポジトリが追加されたか確認 rpm -qa | grep webtatic 成功していれば, webtatic-release-6-4.noarch とでる.次に,今入っているphp関連のモジュールを消す yum
via. PHP: PHP 5.3.x で推奨されない機能 - Manual もう、ざっくりざっくり。$SRC_DIRは適宜設定。 find $SRC_DIR -iname \*.php -print0 | xargs -0 grep -wE 'define_syslog_variables|register_globals|register_long_arrays|safe_mode|magic_quotes_gpc|magic_quotes_runtime|magic_quotes_sybase|(call_user_method|call_user_method_array|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|set_magic_quotes_runtime|session_register
今回はクラスの継承について説明します。 クラスの継承とは、あるクラスの機能を引き継いで新しいクラスを定義することです。 継承元のクラスを基底クラス、継承先のクラスを派生クラスと言います。 まずは下記のコードを見てください。 <?php class OBJECT{ protected $figure; protected $value; public function func(){ echo "テスト実行<br>"; } public function __construct(){ echo "OBJECTコンストラクタ実行<br>"; $figure=1; $value=2; } public function __destruct(){ echo "OBJECTデストラクタ実行<br>"; } } class GREAT extends OBJECT{ public $result;
こんにちは、久保田です。PHP5.6.0alpha1が1月23日付けでリリースされました。 この記事では5.6に搭載される以下の新機能や変更を紹介します。 phpdbgデバッガ 可変長引数のための文法の追加 定数定義での計算のサポート その他NEWSファイルに記述されている変更 PHP5.6.0をビルドして試してみる PHP5.6の新機能を紹介する前に、まずはMacOSXやLinux環境にPHP5.6をビルドして試す方法を紹介します。Windows環境の場合にはビルド済みのバイナリが用意されているのでそれをダウンロードして下さい。 まず5.6.0alpha1リリースの記事にあるリンクから、PHP5.6.0alpha1のパッケージをダウンロードして解凍します。次に解凍したパッケージのディレクトリに進んでconfigureスクリプトを叩きます。
書籍「気づけばプロ並みPHP」のサンプルスクリプトにリモートスクリプト実行の脆弱性があるので報告します。 はじめに Yahoo!知恵袋の質問を読んでいたら、以下の質問がありました。 気づけばプロ並みPHP (著)谷藤賢一 (発行)リックテレコムP112の画像をアップロードする機能でエラーがでます。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11119835496 より引用 質問に対しては回答が既についてクローズされていましたが、引用されているソースを見て任意のファイルを任意のファイル名で、Web公開ディレクトリにアップロードできることに気づきました(下記)。 <?php // 略 $pro_gazou=$_FILES['gazou']; // 略 if($pro_gazou['size']>0) { if ($pro_
先日、php.ini の設定を行いました。そのときにエラーログの出力先を設定いたしました。 php.ini の自分なりのお勧め設定を考えました♪【試行錯誤】 | oki2a24 しかしながら、おかしいです。ヘンです。エラーログが書き込まれないどころか、ファイルすら作成されません。これを解決いたしましたのでメモします♪ # PHP エラーログが出力されない場合は作って、ログファイルの所有者・グループを設定 touch /var/log/php_errors.log chown apache:apache /var/log/php_errors.log なお、操作はすべて ssh でのコマンド操作となります。 具体的な設定手順と確認方法♪ まず、ログ確認用にわざとエラーを起こす php ファイルを作成します。/var/www/html/ がドキュメントルートとします。 echo "<?php
追記(2009/05/10 09:25):何をもって「関数に見える」かは人によると思いますが、下記のリストはリファレンスマニュアルのURLがfunction.*.phpとなっているものを引っ張ってきました。 PHPには一見関数に見えるけど関数ではないキーワードが多く存在します。つまり、PHPの言語の解釈として関数とは異なる処理をしている関数モドキが何個かあるのです。具体的には、他の関数については関数名の解釈はparserが行うのですが、この「関数に見えるけど言語構造」についてはlexer(tokenizerとも呼ばれます)レベルで別のトークンとして解釈されます。 そんなキーワードをZend/zend_language_scanner.lから抜粋してみました。 array die echo empty eval exit include include_once isset list pri
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く