前回書いた記事で、EloquentORMにおけるChunkとCursorメソッドの挙動について、発行されるSQL文の観点から調べました。blog.zuckey17.org そこで、まとめでも書きましたが、主にメモリ使用量を抑えるために使われるChunkとCursorのメソッドについて、実際にメモリ使用量を調べてみました。 メモリ使用量について、実際に計測してみようと思った ※ 僕自身、PHPのコードでメモリ使用量を意識したことはそこまでなく*1、どのように書けば特定の処理のメモリを調べることができるのか、というところから調べたのでその辺についても少し記載しています。 ※本エントリで利用しているコードはすべてgithub.com にあります。 また、PHP7.1SQLite3 という環境で実行しています。 目次 目次PHPの最大メモリを変更する データセットを用意 歩行者移動支
PHP provides several extensions to work with XML. One of them is DOM, which is an implementation of the W3C DOM Interface. While quite powerful, DOM lacks the capability toiterate over the entire DOM tree at once. To get around this limitation, we cancreate a custom class that implements SPL's RecursiveIterator interface to allow us to easily and fully traverse the DOM tree with foreach. Interna
私が使っているさくらインターネットのサーバー(ライトプラン、PHPのバージョンは5.4)にPEARモジュールをインストールしたのでその手順をメモしたいと思います。 さくらのレンタルサーバーのPHPにPEARはあるの? PEARをインストールする前に「そもそもさくらインターネットのPHPにPEARはあるのか?」が気になったので【さくらのレンタルサーバ】基本仕様を調べてみました。 するとこのようにPEARの利用は可能なものの「ご自身でセットアップが必要」とあったのでデフォルトではないようです。つまり自分でインストールしなければなりません。 PEARのインストール方法 ということで私が使っているさくらのレンタルサーバー(ライトプラン)にPEARを手動インストールしたのでその方法を記録しておきます。 1.PEARのファイルを取得 http://pear.php.net/go-pearを右クリック→
PHPはいかにして拡張されるかPHPは従来、C言語で書かれたExtensionによって拡張されて来ました。 しかしPHPの開発者にとってCのハードルは高く、またCの開発者も明示的なメモリ管理に難儀してきました。 それを解決するのが__Zephir__という__PHP Extension開発専用の言語__です。PHPを拡張する言語、Zephirとは http://zephir-lang.com/ Zephir(Zend EnginePHP Intermediate)は現在、Phalcon開発チームが並行して開発を進めている__静的/動的言語__です。 静的に変数型を宣言するのが標準的な記法ですが、型推論の機能を利用することも可能です。 2014年12月末現在での最新バージョンは0.5.7で、安定版に達していないものの、既に__実用レベルのExtensionをPHPとほぼ変わらぬ記法で開

この記事はPHPアドベントカレンダー2014の22日目の記事です 。 2002年3月に公開されたIPAの人気コンテンツ「セキュアプログラミング講座」が2007年6月に大幅に更新されました。そして、その一節がPHPerたちを激しく刺激することになります。 (1) プログラミング言語の選択 1) 例えば、PHPを避ける 短時日で素早くサイトを立ち上げることのみに着目するのであれば、PHPは悪い処理系ではない。しかし、これまで多くの脆弱性を生んできた経緯があり、改善が進んでいるとはいえまだ十分堅固とは言えない。 セキュアプログラミング講座(アーカイブ)より引用 「PHPを避ける」とまで言われてしまったわけで、当然ながらネット界隈では炎上を起こし、現在はもう少しマイルドな表現に変わっています(参照)。本稿では、当時のPHPの状況を振り返る手段として、この後PHPのセキュリティ機能がどのように変化
アメリカ時間の昼ごろにTwitter上が一つのニュースで埋め尽くされました。PHPをC++に変換して高速化する技術をFacebookが公開したというものです。世界中のPHPハッカーが注目する興味深いリリースという事でちょっと長いですが、リリースノートの和訳を行いました。 原文 http://developers.facebook.com/news.php?blog=1&story=358 Facebookにおいて重要なことのひとつが動作の速さです。過去6年間にわたって、PHPが提供する高速な開発ペースによって多くを成し遂げてきました。プログラミング言語としてみると、PHPはシンプルです。簡単に習得し、簡単に書き、簡単に読み、簡単にデバッグする事ができます。我々は他の言語よりも早くエンジニアを獲得し、それによってより早いイノベーションをすることができます。 今日、私は2年に渡って作業して
使える21のPHPコードスニペットが紹介されています。 例えば、以下のような便利なスニペットが紹介されています。 ・ランダム文字列作成 ・メールアドレスのエンコード ・ディレクトリ内のコンテンツ表示 ・ディレクトリ削除 ・JSONデータのデコード ・XMLデータのパース ・ファイルダウンロードヘッダー表示 ・タグクラウド作成 ・Ajaxリクエストかどうか判別 但し、掲載されているメールアドレスの正規表現チェックのコードは注意が必要です(参考)。 コードは以下エントリにて掲載されています。 21 Really Useful & HandyPHP Code Snippets 関連エントリ WEBデザイナーな方向けのPHP入門によさそうな、CSS内でPHPで使うサンプルPHPからTwitterに投稿するサンプルコード&サンプルアプリ
Bug #46478でid:hnwさんに報告していただいたバグを修正しようと思って作成したものですが… そもそもこのバグを作ったのは私で、5年くらい前の話になりますが、HTML4.0でサポートされている実体参照のテーブルではなく、Unicode 1.1 以降はobsolete となっている SGML マッピングを採用してしまったのが事の発端であり、若気の至りなわけです。 例えば ┌|∵|┘ このようなはにわのAAが ┌|∵|┘ になってしまうところから推し測られるように、日本中のユーザサポートの方々のCPU時間を無駄に浪費させるような、凶悪極まりないバグとなっています。 ∵などでググることで、影響の大きさが分かると思われます。 潔くfaviconの絵のような髪型にしたのでどうか許してください m(__)m vArr 8661 ⇕ lAarr 8666 ⇚ rA
追記(2009/02/28 15:35):ソートする配列の要素が数値または数値形式の文字列のみの場合は、<、==、>が推移律を満たすので、この記事のような矛盾は起こりません。念のため。 オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日はPHPのsort関数が不思議な挙動をする例を紹介します。 sort関数の紹介 sort ― 配列をソートする 説明 bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高位へ並べ替えられます。PHP: sort - Manual マニュアルをみる限り普通のソート関数です。省略可能な2番目の引数の意味は次の通りです。 sort_flags オプションの 2 番目のパラメータ s
追記(2009/06/26):PHP 5.2.10以降、この問題は修正されています。「array_unique関数がPHP5.2.10から後方互換性を取り戻します」も併せてご覧ください。 2/26にPHP5.2.9がリリースされましたが、このバージョンからarray_unique関数が後方互換性を失いました。この関数を利用しているアプリケーションは、PHP5.2.9以降のバージョンでは新たなバグに悩まされるかもしれません。 5.2.9RC1の頃にこの仕様変更に気づいて「PHP Bugs: #47370: array_unique has backward compatibility problem, and SORT_REGULAR is confusing」で指摘してみたんですが、相手にされませんでした。 その後もid:moriyoshiさんが元の動作をデフォルト動作にするよう、中の人と
ノッキングオンの会議室使いたい! お題:PHP勉強会 内容:PHPで変態的なことをしてハァハァする 希望日時: 2月26日(木) 人とか:20人くらい・エンジニア・デザイナ・変態さんPHPEditorで有名な(単純に僕が使ってるだけだけど)PHPSpotさんの記事 http://phpspot.org/blog/archives/2008/02/phpdlphp.html 趣旨は、Content-Lengthとかヘッダなんだけど、これをコピーして使おうとすると、大きいファイルだとほとんどの環境では動作しないと思うのでちょっとだけ書き直してみた。 <?php set_time_limit('-1'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment;fil

noupeのエントリー「WordpressSecurity Tips and Hacks」から、WordPressを安全に運営するための10のTipsを紹介します。WordpressSecurity Tips and Hacks 追記: 2008年2月20日 9の「FilesMatch」の記述を修正しました。 併せて「FilesMatch」の関連リンクを追加しました。 タロタローグ ブログ さん、ありがとうございました。 全てのユーザーにサーバー全部の検索を許可しない。 「search.php」で下記の検索コードは使用しない。 <?php echo $_SERVER ['PHP_SELF']; ?> 代わりに下記のコードを使用する。 <?php bloginfo ('home'); ?> 「wp-」がついているフォルダをサーチエンジンなどに登録されないように、「robots.
IBMのサイトに、PHPから操作するデータベースに関してよく見られる5つの問題点とその解決方法が掲載されています。 データベースのデザインをする際、一般的に発生する問題点についての解説です。 で、肝心の5つの問題が何かというと、以下の通り。 Five commonPHPdatabase problems 1つめは古いPHPのコードでは直接、データベースにアクセスしているということ。コレに代わる手段としては、PEARのDBモジュールを使うか、あるいはPHPデータオブジェクト、PDOのクラスを使え、とあります。 2つめは、オートインクリメントを使わないということ。MySQLは基本的にレコード1つについてユニークなIDをオートインクリメントしているわけですが、これを活用していないというパターン。オートインクリメントを有効に使っていない場合、非効率的であるだけでなく、負荷も高くなるそうです。解

Ruby開発者のまつもとゆきひろさんの日記に「PHPがいかに駄目な言語か、という話」があり、たくさんのコメントが付いている。このエントリはもともとAttackingPHPというページに関して書かれたもので、その反論としてDefendingPHPというページもある。Perl Hackerのdankogaiさんも、「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違いというエントリで、PHPの問題点に関して別の視点から言及している。PHPは本当に駄目な言語なんだろうか? (つづく...) いろんなものがfalseだったりするせいで、新たな比較演算子「===」が必要 hashやlistがobjectが区別できない オブジェクト指向機能が壊れているlambda(無名関数)がない。create_functionはlambdaじゃない short_open_tagsやらsa
Getting Started Introduction Asimple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces EnumerationsErrors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

Table of Contents Class Summary HTTP_Client — Asimple HTTP client class. constructor HTTP_Client::HTTP_Client() — Constructor HTTP_Client::attach() — Adds a Listener to the list of listeners that are notified of the object's events HTTP_Client::currentResponse() — Returns the most recent HTTP response HTTP_Client::detach() — Removes a Listener from the list of listeners HTTP_Client::get() — Sends
目次導入 -- HTTP_Request 導入 Basic 認証 -- 保護された Web サイトのための認証 クッキー -- HTTP_Request でクッキーを利用する ファイルアップロード -- HTTP 経由でファイルをアップロードする リクエストヘッダ -- HTTP リクエストに付加的なヘッダを追加する プロキシ認証 -- HTTP プロキシを利用する レスポンスの評価 -- HTTP レスポンスからの情報を評価する HTTP_Request_Listener -- HTTP_Request 操作にリスナーをアタッチする このパッケージは、HTTP リクエストを実行するための簡単な方法を提供します。 GET/POST/HEAD/TRACE/PUT/DELETE、Basic認証、プロキシ、プロキシ認証、SSL、 ファイルアップロードなどをサポートします。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く