タグ

phpに関するrekramkoobのブックマーク (710)

  • PHP5の登場、PHP5とJavaのパフォーマンス比較

    以上のとおり、PHP5のデータベース接続処理はJavaと比較して2分の1以下の実行速度しかないという結果となりました。また、PHP5はPHP4と比較してもデータベース接続処理において10%近く実行速度を低下させています。 PHP5はPHP4と比較して10%〜15%実行速度を低下させていますが、この原因として考えられるのは、やはりオブジェクト指向機能の大幅な強化にあると筆者は考えています。 PHP5は、当初「Zend Engine version 2.0: Feature Overview and Design」(PDF:115KB)において目標としていたオブジェクト指向機能の強化と引き換えにパフォーマンスを犠牲にしたわけですが、この選択によってPHP5は再利用性や拡張性、堅牢なアーキテクチャの実現方法を手に入れました。 パフォーマンスの悪化は各種パッケージ製品(※1)、マシンのスペックアッ

  • 浮浪プログラマの始末書:バッチ処理並列化

    単体でのチューニングでは限界があるプログラムがでてきた。しょうがないので同一処理を複数同時に起動して並行実行できないかを検討中。 しかし、データを一括更新するバッチ処理なので、ディスクI/Oがボトルネックになっているらしく、vmstatでのCPU使用率は数%しかないんだが、こういう場合に平行実行しても早くなるものなんだろうか? アムダールの法則ってやつで。DBと同じマシンで実行されるのでネットワークの遅延もないし。 参考: バッチ処理での処理分割による実行時間短縮方法 - 流通工房 http://www.rkobo.net/4000/4005.html

  • やなしのとさか phpのテクニックやお勉強 | 2.Smartyだけでも

  • 大量件数のINSERT or UPDATE を繰り返すバッチでの注意点

    1.処理速度 単純にINSERTで済む場合はCOPY文やpsqlによる手続きが便利かも知れません。 UPDATEとINSERTがどちらも含まれる場合、最初にINSERTとUPDATEの二つに分けてしまった方が早いかも知れません。 SELECT primary_column FROM table_name WHERE primary_column IN (プライマリーキーの配列3万前後); とかで。 PRIMARYキーが40バイトだったとしても、1MB程度のメモリ量で済みそうです。 2.メモリ使用料について 3万件のデータはファイルに入っていると思うので、単純にfopen+fgetsにしてやればそれほどメモリは使わないんじゃないかと思います。 memory_get_usage()関数を使えれば、実際にメモリ量を見てやると良い気がします。 メモリやPHPの処理よりも、Postgre側やCPU

    大量件数のINSERT or UPDATE を繰り返すバッチでの注意点
  • 75. PHPの便利なコマンドラインオプションを再発見

    普段はWebからの利用が多いPHPですが、CLI版のPHPを使うとシェルスクリプトの代替としても簡単に使用することができます。豊富な関数が用意されているので、バッチ処理や文字列処理を行う場合にもぴったりです。 Webサーバーとの通信を想定して作られたCGI版のPHPとは異なり、このCLI版PHPには便利な機能がいっぱいです。 今回は、このCLI版PHPを通じて、主なコマンドラインオプションを再発見しましょう。 ちなみにCLI版の詳細については、PHPをコマンドラインから使用するを参考にしてください。 ○ -v オプション(--version) PHPのバージョンが表示されます。以下のような感じの結果が表示され、cli版かどうかも確認できます。 $ php -v PHP 5.2.0 (cli) (built: Feb 7 2007 04:54:19) Copyright (c) 1997-2

    75. PHPの便利なコマンドラインオプションを再発見
  • サービス終了のお知らせ

    平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 件に関するお問い合わせはこちらよりお願いいたします。

  • ハタさんのブログ : PHP で並行処理するとして

    PHPでスレッドがあったらいいなーと思ったのはここ最近の事なのですが、僕がそうを思ったのはApacheの外へ出てしまったPHPたちがバックグラウンドで仕事をしていることを想定していたんですね。 ブラウザから起動するクエリで非常に重たい処理(S2Daoでも何でもいいんですが)をする場合、いったんブラウザ上からバッチ処理みたいな感覚でプロセスを分離する必要があります。(でないと処理が終わる || タイムアウトまでブラウザが応答待ちになる) で、処理を投げるまではいいんですが、その後処理の経過を知るためにはステータスコードというか終了コードを見る。という方法を教えてもらったんですが、どうもこれってカッコワルイ気がしてます。 んで、どっかにプールしている仕組みがあればいいんじゃね?という誰もが行き着きそうな所に行き着いたワケで。 絵にするとこんな感じ んで、少し調べた程度だと、PHPではWeb

  • 日曜研究室 [技術的な日常:あなたの幸せはここにある] - phpで作成したバッチ処理をwgetを使いcronで自動実行してみた

    お恥ずかしい限りなのですが、実は今までcronで何かを自動実行したことがありませんでした。 apacheのログをlogrotate?rotatelog?(どっちだったっけ?)したことはありましたが人の猿真似でしかなく、cronはなんか設定ファイルをゴリゴリ書く必要があるというイメージがなぜかあって、敬遠していました。 この前作った、SEO遊びのためのサイトにもバッチ処理があったのですが、手動で(!)実行していました。もちろん何の考えもなく手動という面倒な方法をとっていたわけではなく、まだ肝となる処理が不安定で、バッチ処理も確実に実行されるという確信がもてなかったので、モニタリングも兼ねて手動にしていました。 しかし今日、妙に複雑だったDB回りから全体的に作り直し、コアとなる処理の安定度が上がった(気がする)ので、バッチ処理も気合をいれてメールでエラーを通知する処理を組み込んだりなんか

  • サービス終了のお知らせ

  • サービス終了のお知らせ

    平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 件に関するお問い合わせはこちらよりお願いいたします。

  • PHPからPostgreSQLに大量のデータを登録する

    PostgreSQLに大量のデータを登録する際はINSERTを使って一件づつ処理するより、COPYを使って一気に登録した方が実行速度が(かなり)速いです。 そこでPHPでもCOPY文を使ってみましょう。 pg_copy_fromを使う 登録するデータが配列に入っているならpg_copy_fromだけで一気に処理できます。 配列の1要素が1レコードに対応しています。1要素内では各カラムをデリミタ(デフォルトは”\t”)で連結します。 <?php $values = array(); $values&#91;&#93; = "1\tname1"; $values&#91;&#93; = "2\tname2"; $values&#91;&#93; = "3\tname3"; $db = pg_connect("dbname=hogedb"); pg_copy_from($db, 'table',

  • Xdebugのフロントエンド·Webgrind MOONGIFT

    どのようなWebシステムであっても、速度は速い方が良い。最近はハードウェアのリソースが潤沢で、油断するとついつい富豪的なプログラミングになりがちなので、しっかりと気を引き締めないと思わぬボトルネックになったりする。 PHPでそうしたシステムのプロファイリングを行うのに利用するのがXdebugだ。そしてそのXdebugと一緒に利用したいのがこのソフトウェアだ。 今回紹介するオープンソース・ソフトウェアはWebgrind、WebベースのXdebugフロントエンドだ。 WebgrindはXdebugさえ動作していれば後の設定は殆ど不要という、ごく簡単に利用できるソフトウェアだ。Xdebugの吐き出すファイルのパスさえ設定すれば良い。後はWebgrindの画面にアクセスするだけだ。 実行したファイルのパスや、かかった時間などが一覧され、さらに各実行単位でコストが見られる。コストが特に大きい処理の中

    Xdebugのフロントエンド·Webgrind MOONGIFT
  • PHPアプリのプロファイリングをWebベースで行う「webgrind」:phpspot開発日誌

    webgrind - Google Code Webgrind is an Xdebug profiling web frontend in PHP5.PHPアプリのプロファイリングをWebベースで行う「webgrind」。 プロファイリングとは、どの部分にどれだけ時間がかかったかというものを調査することで、ボトルネックの計測に役立ちます。 PHPのプロファイリングというと、Xdebugでログを出力し、そのログをWinCacheGrindやKCacheGrindなどのツールで読み込んでプロファイリングするというものでしたが、Webから読み込めるPHP5でかかれたwebgrindというツールがGoogle code 上で公開されています。 /tmp に吐かれたログをそのまま読み込めるようで、サーバからいちいちログをダウンロードして読み込む必要がなくなります。 PHP開発に活用できますね。

  • PHP, HTML5, UI/UXのアプリ開発 | アシアル株式会社

    Webデザインはもちろんのこと、ユーザーインターフェースの視点にたったデザインの提案を行います。(UI技術とプログラミング技術を高い次元で組み合わせます) アシアルスクールでは最先端の技術やWeb開発の実践的なノウハウを提供しております。1日開催の短期のスクールや半日セミナー等、お手軽に受講できます。

    PHP, HTML5, UI/UXのアプリ開発 | アシアル株式会社
  • 【PHP】zlib.output_compressionによる帯域の節約 - (・∀・)イイ!!Memo

  • DBから取得したデータを一度に沢山表示する場合の高速化 - ログ日記

    Webサーバが一台の場合はPHPが処理するよりもデータベースで処理した方が早い。 あと絶対的な時間。例えばPHPで計算して一ページ表示するのに1秒かかりDBで計算して0.1秒かかる場合は、Webサーバが複数あってもどっちにロジックを持って行くかは考えもの。PHPで集計処理を行うとしても、結局DBにselect文を発行する回数は増えるわけだし。 まぁ同時アクセスの数だなぁ。新規のネットショップ程度なら一秒間に何十人もアクセスしてくることは無いと思うのでDB側で処理するのがいいかと。 ただAjaxを使ってる場合は、一人が一ページ表示中に何度もリクエストを送ることになるのでそれも考慮しないといけない。 というわけで、うちの場合は同時アクセスが少ないかつ重い処理を行うのでDB側で計算するように修正。 主な変更項目。 アクセラレータを利用する foreach を減らす 圧縮転送を行う 文字コードにE

    DBから取得したデータを一度に沢山表示する場合の高速化 - ログ日記
  • GIGAZINE最大の挑戦、LoadAverage「86」から「3」へ

    というわけで、再び負荷を下げる方法を模索した、戦いの記録。 1.MySQLの設定を変更して高速化 2.Zend Optimizer 3の導入 3.ionCube PHP Acceleratorの導入 4.テンプレートの見直しでクエリーを減らす 5.robots.txtでクロールする間隔を制御する 6.MySQLの設定を負荷を低くする設定に変更 7.キャッシュを有効化する 前回解説した「GIGAZINEのLoadAverageを「27」から「2」へ下げた方法」から約3週間後、6月20日(火)の夜、気がつくと負荷の15分平均は「25」をコンスタントに吐き出すようになり、さらに訪問者は急増、ついに6月28日(水)12時45分、負荷対策の効果がほとんど出ないまま、LoadAverage15分平均は「86」に…。 何か対策が根的に間違っているのだろうか?それとも、もうGIGAZINEサーバのハード

    GIGAZINE最大の挑戦、LoadAverage「86」から「3」へ
  • [ThinkIT] 第2回:モジュールによる高速化と機能拡張 (1/3)

    「第1回:意外と知らないZend Engine」では、Zend EngineがPHP実行環境の根幹であることを紹介しました。 第2回目となる今回は、Zend Engineと連係する周辺のモジュールに関して紹介します。これらのモジュールは、PHPの機能を補完や拡充する役割を担います。

  • NIGHT THE KNIGHTS

  • 【Vine Linuxで自宅サーバー】Zend Optimizerの導入(PHPの高速化)

    ここではZend Optimizerという無料のPHPコード最適化モジュールを導入して、PHPの高速化を行います。 Zend Optimizer のバージョンが3になって、従来の Zend Optimizer と比較して約40%の高速化を実現しているようです。 また、PHP4.2.x~PHP4.4.x、最新のPHP環境である PHP5.2.xまで幅広いバージョンのPHP環境に対応しています。 Zend Japanにアクセスして、ユーザー登録を行ってから Zend Optimizer をダウンロードします。 「MyZendログインページ」をクリックします。