0

私はis_mobile()をテストしています:

if (Agent::is_mobile())
{
    $content = View::factory('mobile\viewname');
}
else
{
    $content = View::factory('standard\viewname');
}

PHPプロファイラーは、trueまたはfalseを返すために(アプリでis_mobile()関数を使用しないことを差し引いた後)2.25MBを占めると報告しています。

私のbrowscap.cacheファイルサイズは433KBですが、この関数がチェックを行うために消費するメモリを少なくする計画はありますか?今のところ、アプリにメモリを追加しすぎていたため、この関数を削除する必要がありました。

4

2 に答える 2

1

最善の解決策は、php.ini(http://www.php.net/manual/en/misc.configuration.php#ini.browscap)を介してbrowscapファイルを使用するようにPHPを構成することです。これにより、Agentクラスは次のことが可能になります。 get_browser()を使用します。

それが不可能な場合は、Agentクラスを使用してこの関数をシミュレートし、browscapファイル自体をフェッチできます。Jelmerが言ったように、設定されたURLを変更することで、このファイルをライトバージョンに置き換えることができます。

ただし、デフォルトでは、このファイルは週に1回だけフェッチされます。フェッチした後、ローカルで解析、最適化、およびキャッシュされます。ルックアップを実行できるようにするには、このキャッシュファイルをロードする必要があります。これにより、表示されるメモリ使用量を考慮することができます。これはメモリに保持されないため、memory_get_peak_usage()をチェックした場合にのみメモリ使用量を確認する必要があります。

ルックアップの結果もキャッシュされるため、次に同じブラウザーが起動したときに、情報がキャッシュから取得され、browscapキャッシュはロードされません。

于 2011-07-19T17:12:57.437 に答える
1

これは、このような特定の燃料に関する質問をするのに最適な場所ではありません。そのためのフォーラムがあり、バグを検討した場合はGithubに問題を投稿できます。

そうは言っても、agents.php構成ファイルをapp / configにコピーし、「http://browsers.garykeith」の代わりに「http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI」を使用するように編集できます。 com / stream.asp?BrowsCapINI "、ファイルサイズを50%強節約します。ただし、認識されるブラウザは少なくなります。

これはWanWizardによって書かれたので、確実に知りたい場合は、フォーラムで彼に尋ねる必要があります。しかし、私が知る限り、これはユーザーのブラウザーについてもっと知るための最も信頼できる方法です。ただし、ライトバージョンをデフォルトにするようにWanWizardに提案します。

于 2011-07-19T09:46:17.320 に答える