2

Phalcon (および一般的なフレームワーク) の真新しいので、私の無知を許してください。

自分の設定をブートストラップ ファイルに読み込み、それをセッションに保存したい (一度だけ読み込み、グローバルにアクセスする必要がある)。

セッションが作成され、構成情報が $Config に正常に読み込まれています。ただし、セッションに $Config を保存するにはどうすればよいですか? 私はコントローラーにいないので、使用できません$this->session。唯一の方法は、セッションを DI から引き出し、 $config プロパティを追加してから、DI のセッション プロパティを再設定することです。

$DI->setShared('session', function(){
    $session = new Phalcon\Session\Adapter\Files();
    if(session_status() == PHP_SESSION_NONE)
        $session->start();
    return $session;
});

$Config = require '../app/config/config.php';
$Session = $DI->get('session');
$Session->config = $Config;
$DI->setShared('session',$Session);

ブートストラップのセッションに何かを保存するのはかなり非効率的な方法のように思えますが。これはそれを行う唯一の方法ですか、それとも隠れた機能が欠けていますか? セッションを手動で (匿名関数ではなく) 作成し、「config」を設定して、$DI->setShared().

4

2 に答える 2

3

構成を 1 回だけ読み込むことでアプリを高速化しようとしていますか? もしそうなら、それが実際にボトルネックであることを確認するためにアプリをプロファイリングしましたか?

55 行の構成ファイルがあり、xdebugqcachegrindを使用すると、構成ファイルの読み込みにページ全体の読み込みの 0.04% がかかることがわかります。私の場合、おそらくもっと簡単に節約できるでしょう!

オペコードキャッシングを使用していますか? 私は何年もAPCをうまく使っていましたが、断続的な問題が発生したため、最近opcacheに変更しました (PHP 5.5 では標準です)。

あなたがそれを行ってもまだ十分に速くない場合は、他の人に同意し、すべての訪問者が独自のものを持っているため、セッションに構成を保存することは良い考えではないと言います.多くのユーザーがいる場合、またはセッションがファイルに保存されている場合は、1 つの構成ファイルを何百ものファイルに交換している可能性があります。

キャッシュを試してみる価値があると思われる場合は、次のようなもの: マニュアルから適応:

//Cache data for one hour
$frontCache = new Phalcon\Cache\Frontend\Data(array(
    "lifetime" => 3600
));

// Create the component that will cache "Data" to a "Memcached" backend
// Memcached connection settings
$cache = new Phalcon\Cache\Backend\Memcache($frontCache, array(
    "host" => "localhost",
    "port" => "11211"
));

// Try to get cached records
$cacheKey = 'site-config';
$config    = $cache->get($cacheKey);
if ($config === null) {
    $config = require '../app/config/config.php';

    // Store it in the cache
    $cache->save($cacheKey, $config);       
}

しかし、スピードを求めて他の場所に時間を費やしたほうがよいと思います。

于 2013-07-31T11:32:13.003 に答える
2

Vokuro サンプル アプリケーションは、Phalcon アプリがどのように構成されているかを学ぶのに非常に役立つ方法であることがわかりました。コントローラーコード内で構成を使用できるようにしようとしている場合、依存性注入を使用することが必要な場合があります。構成をセッションに保存する必要もない場合があります。幸運を祈ります。

于 2013-07-05T20:45:13.170 に答える