ボトルネックと向き合う ハローみなさん、エジソンです。 みなさんは、PHPで楽しくプログラムしていますか? 僕は先日、とある機能で、パフォーマンスが著しく悪く、実用に耐えられない箇所を発見しまして、その箇所の修正に取り組んでいました。その時に得た知見を、本記事で披露したいと考えました。 ある全体の作業工程の中で、特定の工程が遅い事により、全体に影響を及ぼしてしまう事を、ボトル(首)が細い事で水の通りが悪くなる事になぞらえて、ボトルネックと呼びます。 ボトルネックの特定 ボトルネックを解消する手順は以下の通りです。 ボトルネックとなっている箇所を特定する 該当箇所を修正する 修正後にどれだけ処理速度が改善したかを確認する 期待されている場合は、OK。そうでなければ、「1」に戻って再調査。 一番やってはいけない事は、「2」から取りかかる事です。はやる気持ちをぐっとこらえて、まずはボトルネックと
ちなみに E_ALL & ~E_NOTICE の値が 6135 になる理由は E_ALL の値が 6143、E_NOTICE の値が 8 なので 6143-8=6135 になります。(または E_NOTICE と E_STRICT 以外の値を足した数が 6135 になります。 私は開発中は E_NOTICE も表示するようにしていますが、結構表示させない人が多いようで人のコードを修正するときなど Notice エラーが出て困ることがあります。E_NOTICE を表示するようにしておくと未定義の変数などバグの元になりやすいものを教えてくれるのでお勧めです。 また、開発終了して本番運用するときにはブラウザにエラーを出力しないように error_reporting(0); を設定しておくことを忘れずに! その際も PHP のエラーはエラーログに記録されるようにしておかないのも忘れずに。 関連する
# 参考資料 - https://speakerdeck.com/hanhan1978/purohuairawoshi-tutaphpapurikesiyongai-shan-falsekan-suo - https://speakerdeck.com/hanhan1978/web-applicat…
昨日の日記の続きで、Ajaxに固有なセキュリティ問題について検討します。今回はJSON等の想定外読み出しによる攻撃です。これら攻撃手法は本来ブラウザ側で対応すべきもので、やむを得ずWebアプリケーション側で対応する上で、まだ定番となる対策がないように思えます。このため、複数の候補を示することで議論のきっかけにしたいと思います。 まず、作りながら基礎から学ぶPHPによるWebアプリケーション入門XAMPP/jQuery/HTML5で作るイマドキのWeから、Ajaxを利用したアプリケーションの概念図を引用します(同書P20の図1-23)。 前回、前々回は、(5)のHTTPレスポンスの前後で、JSON等のデータ作成(エンコード)に起因するevalインジェクションや、(5)のレスポンスを受け取った後のHTMLレンダリングの際のXSSについて説明しました。 しかし、問題はこれだけではありません。正常
まえがき マルチサイトのWordPressの場合、デフォルトのページ内検索だと一つのブログしか検索対象に含まれません。 デフォルトのページ内検索はformタグのaction属性に指定されているURLのブログが検索対象となります。 しかし、WordPressをマルチサイトにしている場合は全てのブログを検索対象に含めたいことが結構あるはずです。 今回はマルチサイトの全ブログを検索対象に含める方法を紹介します。 search.php(検索結果ページ)にコードを追加する方法です。 全ブログを検索対象にするためsearch.phpを編集 search.phpのループ部分を下記のように修正します。 <div>検索キーワード '<?php echo get_search_query(); ?>'</div> <?php $query_string=esc_attr($query_string); $bl
WordPressのコア開発チーム、WordPressをWebブラウザで実行する「Client-side WebAssembly WordPress」を開発中 WordPressのコア開発チームは、PHPサーバをWebAssembly化することなどにより、WordPressをWebブラウザ上で実行する「Client-side WebAssembly WordPress」(以下WASM WordPress)の開発中であることを明らかにしました。アーリー版のデモも公開しています。 WordPressのWebAssembly化は、先月VMwareが実験的な取り組みとしてデモを公開していました。 参考:PHPとSQLiteをWebAssembly化し、Webブラウザ上でWordPressを実行可能にしたデモをVMwareが公開 しかし今回はWordPressのコア開発チーム自身がWebAssemb
CPIサーバはphp.iniがあるので、そこに ;スクリプトが確保できる最大メモリの指定 memory_limit = 128M ;POSTデータに許可される最大サイズ ;ファイルアップロードにも影響する post_max_size = 8M ;アップロードされるファイルの最大サイズ upload_max_filesize = 2M ;同時にアップロードできるファイルの最大数 max_file_uploads = 20 を書けばいいので楽勝じゃんって思ったけど、ハマった。 php.iniファイルがどうにも読み込まれてない感じがして、phpinfoで確認すると。 /usr/home/ユーザー名/html/php.ini と表示されるから、読み込まれている。大丈夫と思ったが、やっぱりだめ。 .htaccessでphp.iniの場所を指定しないといけないじゃないかと思って、検索した結果。 suP
Ajax から PHP を呼び出すとき、 普通の方法だと1回ぽっきりのレスポンスしか受け取れません。 でも次みたいな場合、リアルタイムにレスポンスを受け取りたいです。 データを常に画面上で更新したい場合 Twitterタイムライン的なのを作る場合 とにかくリアルタイム通信したい場合 僕もあるWebアプリを作っていて、リアルタイムレスポンスが必要でした。 ここでは自分の記憶の整理も兼ね、 PHPでストリーム出力して Ajax でリアルタイム更新する方法 を紹介します。 ストリーム出力の基本さえ知っていれば、意外と簡単にできます。 手順0.PHP + Ajax でリアルタイム更新する基本の流れ リアルタイム更新をする処理、これは2つの部分に分けられます。 サーバー側(データを更新する) ブラウザ側(データを受け取る) サーバー側では PHP を使ってストリーム出力、 ブラウザ側では Ajax
11/15に開催されたこちらの勉強会に参加いたしました! デバッガでWordPress本体やプラグインの脆弱性を追いかけてみよう - connpass こちらの勉強会は、「WordPress本体とプラグインの脆弱性をデバッガで追跡することにより、脆弱性の中身について詳しく追跡し、理解を深める」という内容のものであり、なんとあの徳丸浩さんが講師をされています! 私個人としては、仕事というか半分趣味でゆるゆる脆弱性の検証をしており、今回の勉強会はまさに自分の興味分野にドンピシャな内容だったので、非常に楽しんで参加させていただきましたw 私はこちらの勉強会にブログ枠として参加いたしましたので、勉強会の内容について本ブログにてレポートいたします。 分析対象の脆弱性について 今回分析する題材となった脆弱性は以下の二つです。 なお、二つの脆弱性とも徳丸さんが詳細な解説記事をブログにて公開されております
■事象 大きな添付ファイルを送りたい ↓ upload_max_filesize を大きくしよう (10M) ↓ 試しに POST で 10M弱のファイルを送ってみよう ↓ 特にエラーも出ず、ただ $_POST が空になってしまう! ■原因と対応 post_max_size ≧ upload_max_filesize でないといけないのにデフォルトの 8M のままだった。 こちらも 10M に変更したところ、$_POST の中身が取れるようになった。 ■マニュアル post_max_size upload_max_filesize memory_limit post_max_size の項に細かい説明が書かれている。 memory_limit ≧ post_max_size ≧ upload_max_filesize のサイズで設定しないといけない。 POSTデータの大きさが、post_m
Amazon APIの仕様が変わり2019年12月1日から新しいバージョン5.0のPA-API(Product Advertising API)と移行します。 これに伴い、2019年11月30日までに移行が完了していない場合は現在のPA-APIは使えなくなるということです… Product Advertising API (以下PA-API)の新しいバージョン(PA-API v5)についてお知らせいたします。 PA-API v5への移行を2019年11月30日までに実施しなかった場合、現在のPA-APIはご利用をいただけなくなります。 引用 : PA-API v5移行のご案内 ※ 自分は「Amazon API」と呼んでいましたが、正確にはPA-APIなので、今後はPA-APIに統一します 変更方法としては、以下の2ステップです。 ステップ1: PA-APIのアクセスキーはアソシエイト・セン
まぁ PHPMailer だけじゃ対応できないのですけどね。 昨今の携帯電話にメールを送ろうとするなら、SPFレコードを使った送信ドメイン認証に対応必須のようなので一応対応してみました。 まずは SPF とはなんぞやと。 1. 送信元は SPFレコード っていうのをDNSサーバに登録(公開)しておく。 2. 受信者は送信元のFROMアドレスから DNSを参照し、『SPFレコード』が公開されているかどうかチェック。 3. SPFレコードには IPアドレス等の情報を含むので、「なりすましメール」の判定等を実施して捨てたり破棄したり。 と、まぁこんな感じで理解しましたけども中らずとも遠からずーな感じかと思います。 で本題ですが、PHPMailer というライブラリを使うとほんとに簡単に PHPからメールが送信できます。sendmail だとか phpのmail()関数だとかまったく意識しません。
ようこそ 時代遅れの情報がウェブ上にあふれている。そんな情報を見たPHP初心者は戸惑ってしまうだろう。そして、まずい手法やまずいコードが広まってしまう。 そんなのはもうやめよう。PHP: The Right Way は気軽に読めるクイックリファレンスだ。PHPの一般的なコーディング規約、 ウェブ上のよくできたチュートリアルへのリンク、そして現時点でのベストプラクティスだと執筆者が考えていることをまとめた。 大事なのは、 PHPを使うための正式なお作法など存在しない ってこと。 このサイトの狙いは、はじめて PHP を使うことになった開発者に、いろんなトピックを紹介すること。 経験豊富なプロの人にとっても、これまで深く考えることなく使ってきた内容について、新鮮な見方を伝えられるだろう。 このサイトは、決して「どのツールを使えばいいのか」を教えるものじゃない。 いくつかの選択肢を示して、それぞ
(投稿日:2017年07月28日) 投稿が増えてくると目的のページを探すのがだんだん困難になっていきます。そこで、カテゴリー、タグを組合せて絞り込み検索できるようにする方法を紹介します。 完成イメージはセレクターズの買取実績の絞り込み検索です。 ジャンルはカテゴリー、ブランドはタグになっていて、それらを組合せて検索できるようになっています。 基本の検索フォーム こちらの検索フォームをベースにいじっていきます。 <form method="get" action="<?php bloginfo('url'); ?>"> <input name="s" id="s" type="text" placeholder="キーワードを入力"> <input id="submit" type="submit" value="検索"> <input id="reset" type="reset" val
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く