2011-07-18 4 views
0

je fait l'essai is_mobile():FuelPHP - Agent :: is_mobile() demande la mémoire

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

rapports profileur PHP, il prenant 2.25MB (fonction après soustraction de ne pas utiliser is_mobile() dans l'application) pour renvoyer une vrai ou faux.

ma taille de fichier browscap.cache est 433KB, est-il prévu de faire cette fonction prendre moins de mémoire pour faire ses vérifications? En ce moment, j'ai dû supprimer cette fonction car elle ajoutait trop de mémoire à mon application.

Répondre

1

La meilleure solution est de configurer PHP pour utiliser le fichier browscap, via php.ini (http://www.php.net/manual/fr/misc.configuration.php#ini.browscap), ce qui permettrait la classe Agent à utiliser get_browser().

Si cela n'est pas possible, la classe Agent vous permet de simuler cette fonction et d'extraire le fichier browscap lui-même. Comme l'a dit Jelmer, vous pouvez remplacer ce fichier par la version allégée en changeant l'URL configurée.

Cependant, par défaut, ce fichier n'est récupéré qu'une fois par semaine. Après récupération, elle est analysée, optimisée et mise en cache localement. Pour pouvoir effectuer une recherche, ce fichier de cache doit être chargé, ce qui peut tenir compte de l'utilisation de la mémoire que vous voyez. Il n'est pas conservé en mémoire, vous ne devriez donc voir l'utilisation de la mémoire que si vous vérifiez memory_get_peak_usage(). Le résultat d'une recherche est également mis en cache, de sorte que la prochaine fois que le même navigateur arrive, les informations sont extraites du cache et le cache de la browscap n'est pas chargé.

1

Ce n'est pas vraiment le meilleur endroit pour poser une question spécifique de carburant, nous avons des forums pour cette raison et vous pouvez poster des problèmes sur Github si vous considérez quelque chose comme un bug. Cela étant dit, vous pouvez copier le fichier de configuration agents.php dans app/config et le modifier pour utiliser "http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI" au lieu de "http: // browsers.garykeith.com/stream.asp?BrowsCapINI ", qui vous permet d'économiser un peu plus de 50% en taille de fichier. Il reconnaît cependant moins de navigateurs.

Cela a été écrit par WanWizard, vous devrez donc lui demander sur les forums si vous voulez savoir à coup sûr. Mais pour autant que je sache, c'est le moyen le plus fiable d'en savoir plus sur le navigateur de l'utilisateur. Je vais proposer à WanWizard de faire la version allégée par défaut.