信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    KeepAliveTimeoutについて

    みなさん、こんにちわ。 らめぇです。 では、早速。。   KeepAliveの説明 1回のTCP接続で複数のHTTPリクエストを処理する機能。 HTTP/1.0 の Keep-Alive 拡張と HTTP/1.1 の持続的接続の機能は、 複数のリクエストが同じ TCP の接続で送られる、長時間持続する HTTP セッションを提供します。 apacheドキュメントより引用 簡単に説明するとKeepAliveとは、「three-way handshaking」の節約です。 画像やCSSが多いサイトではKeepAliveをonにすることによりその恩恵を受けることができるでしょう。   KeepAlive関連ディレクティブは、以下のとおりです。 下記のディレクティブを設定することでKeepAlive機能を制御します。 KeepAlive HTTP の持続的な接続を有効にします。(On/Offで設定します) KeepAliveTimeout  KeepAlive=On の時に有効で、持続的な接続で次のリクエストが来るまでサーバが待つ時間(秒)を設定します。 MaxKeepAliveRequests KeepAlive=On の時に有効で、持続的な接続上で許可されるリクエストの数を設定します。 KeepAliveTimeoutってなに? 以下の設定について考えてみましょう。 KeepAliveTimeout 15 KeepAliveとは「three-way handshaking」の節約と説明しました。 Webサーバとの間で確立した接続が転送終了後も維持され、2回目以降のリクエストではこの接続をそのまま使用できる。 一見、良いことだらけに見えるこのKeepAliveにも欠点があります。   その一つがKeepAliveTimeoutの設定時間   上の例では、KeepAliveTimeout 15としています。   ひとつの要求が完了してから、コネクションを切断しないで次の要求を受け入れるまでの時間。言い方を変えると「クライアントからのリクエストがなくてもKeepAliveを維持する秒数」ということになります。   「リクエストがなくてもKeepAliveを維持する秒数」ここがポイントです。処理がすぐに終わった場合でもKeepAliveTimeout 15のままだと、15秒間接続をキープしたままになり、このプロセスは無駄になってしまうということです。   短くするほど無駄な接続を減らせますが、短くしすぎると必要なコネクションまで閉じてしまいます。クライアントがコネクションを確立し直す場合が増えます。   結局は環境に合わせて適切な値を見つけてくださいってことです。   小規模のサイトではあまり気にしない(設定を変えても効果はないと思います)KeepAliveの設定。 アクセスが増え、パフォーマンスが低下してきたら一度見直してみると良いかもしれません。 らめぇでした。

  • テクログ

    正規表現

    正規表現が苦手という人をよく見かけます。そういう私も少し前までは苦手でなるべく避けて通っていたクチです。何が嫌だったのかと思い返すと、単に慣れていなかったのが原因だったような気がします。という事で、覚えることもそんなに多くないのでサクッと苦手意識を無くしてしまいましょう。文字指定.(ドット) 何でもいい一文字[abc] aかbかcの何れか[^abc] aかbかcの何れか以外[a-c] aかbかcの何れか()括弧 グループとして扱う(abc|def) abc、defのどちらか文字数指定? 直前の文字が0回か、1回マッチ* 直前の文字が0回以上マッチ+ 直前の文字が1回以上マッチ{3}直前の文字が3回マッチ[3,]直前の文字が3回以上マッチ[3,5]直前の文字が3回から5回マッチ位置^ 最初$ 最後その他 上記のメタ文字を文字として扱う? 最短マッチ+*と組み合わせれば次の文字が最初に現れるまでこの辺りが基本ではないかと思います。あとは習うより慣れろということで実戦で使っていけば苦手意識は無くなっていくはずです。一つだけ、気をつけるポイントは「.(ドット)」はなるべく使わないといったところでしょうか。何でもいい一文字は思わぬものをヒットさせて不具合の原因になります。正規表現は様々なプラットフォームで使えます。phpやjavascriptなどはもちろん、mod_rewriteやmysql、postgresなどのwhere句など。多少の文法は違いはありますが、基本を覚えておけばどんなプラットフォームでもいけます。覚えておいて損はない技術です。

  • テクログ

    Controllerからforgeを用いてViewへ値を渡す方法 by fuelPHP

    ControllerからView::forgeを用いてViewへ値を渡す方法を以下に記載しておきます。 ■例1) ・Controller.php $data['ymj'] = 'わたしはやまじゅんです';  $this->template->content = View::forge (指定url/index, $data); ・指定url/index.php 上記のように、 forge されたViewファイル内で値を参照する場合は、 問題なく参照することが出来ます。   ■例2) ・Controller.php $data['ymj'] = 'みんなのやまじゅんです'; $this->template->content = View::forge (xxx/index, $data);  ・xxx/index.php ・yyy/_form.php   上記のように、index.php内で_form.phpをrender している場合、renderの第2引数で、配列に入れなおすことで対応できます。   ただ、いちいちControllerから渡された値をまた配列に入れるのは 面倒くさいので、以下のように設定して対応します。   ・xxx/index.php ↓↓↓↓↓   $__dataにControllerで設定された値も入っているので ばっちり取得できます。   上記対応時、以下のエラーが発生する場合があります。   RuntimeException [ Error ]: Object class "OrmQuery" could not be converted to string or sanitized as ArrayAccess. Whitelist it in security.whitelisted_classes in app/config/config.php to allow it to be passed unchecked.   その場合、以下のファイルの指定場所を設定することで解決します。   docroot/fuel/app/config/config.php 'whitelisted_classes' => array( 'Fuel\Core\Response', 'Fuel\Core\View', 'Fuel\Core\ViewModel', 'Fuel\Core\Validation', 'Closure', 'Orm\Query',←追加 )   これでめでたし、めでたし♪ ではでは~!