Maison > php教程 > PHP开发 > Explication détaillée des considérations liées au développement SAE de ThinkPHP

Explication détaillée des considérations liées au développement SAE de ThinkPHP

高洛峰
Libérer: 2016-12-28 15:54:00
original
1216 Les gens l'ont consulté

Cet article détaille les considérations liées au développement SAE de ThinkPHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Le développement SAE de ThinkPHP est fondamentalement le même que la version standard de ThinkPHP. Vous n'avez pas besoin de savoir comment utiliser l'interface SAE de ThinkPHP. Le moteur a automatiquement intégré l'interface SAE pour vous. Tant que vous maîtrisez le développement ThinkPHP, vous pouvez facilement maîtriser le développement SAE basé sur ThinkPHP.

Voici quelques précautions que nous donnons lors de l'utilisation du processus de développement du moteur SAE, qui peuvent vous aider à mieux terminer le développement et le déploiement de SAE.

Configuration

Le moteur SAE a sa propre configuration conventionnelle et sa configuration propriétaire lors de son exécution, donc l'ordre de chargement du fichier de configuration est :

Configuration conventionnelle->Configuration du projet-> ; Configuration conventionnelle SAE -> Configuration propriétaire SAE

Les éléments de configuration dans la configuration conventionnelle SAE et la configuration propriétaire SAE remplaceront la configuration du projet.
Configuration de la convention SAE : située dans le répertoire du moteur/Sae/Conf/convention_sae.php, qui définit les éléments de configuration de connexion à la base de données fixes lorsque le programme s'exécute sur SAE.
Configuration propriétaire SAE : Situé dans le répertoire Conf du projet, le nom du fichier est config_sae.php Vous pouvez y écrire la configuration SAE.

Remarque : la configuration conventionnelle SAE et la configuration propriétaire SAE sont des configurations uniques pour l'environnement SAE et ne seront pas chargées lors de l'exécution locale.

Base de données

Les développeurs n'ont pas besoin de définir les éléments de configuration de la base de données liés à SAE dans le fichier de configuration du projet (config.php). Ils doivent uniquement définir la base de données à laquelle se connecter lors du débogage local. Lorsque le code est soumis à SAE, il peut s'exécuter sans modifier aucun élément de configuration, car la configuration de la convention SAE remplacera automatiquement la configuration de la base de données dans le fichier de configuration de votre projet.

Lorsque le code s'exécute sur SAE, il établira une connexion à une base de données distribuée et séparera la lecture et l'écriture.

Mise en cache

Pendant le processus de développement SAE, vous pouvez toujours utiliser la méthode de mise en cache intégrée de ThinkPHP pour le traitement. Voici la différence entre le moteur SAE utilisant différentes méthodes de mise en cache sous les plates-formes locales et SAE (notez que le moteur SAE déterminera et traitera automatiquement cette différence) :

Explication détaillée des considérations liées au développement SAE de ThinkPHP

Le la nouvelle version de ThinkPHP prend en charge la mise en cache SQL Pour la fonction de file d'attente, nous pouvons configurer DB_SQL_BUILD_CACHE pour activer la mise en cache de l'analyse des instructions SQL. Sous la plateforme SAE, KVDB est utilisé pour stocker le cache SQL, donc l'élément de configuration DB_SQL_BUILD_QUEUE ne fonctionnera pas. Et lors de l'exécution sous SAE, le service Counter sera utilisé pour enregistrer le nombre de retraits de la file d'attente du cache SQL dans l'arrière-plan de gestion du compteur

http://sae.sina.com.cn/?m=counter<.>

Si vous voyez une valeur élevée dans la calculatrice nommée think_queue_out_times, cela signifie que le nombre de files d'attente que vous définissez est trop petit et que vous devez ajuster l'élément de configuration DB_SQL_BUILD_LENGTH.

Téléchargement de fichiers

Le téléchargement de fichiers utilise toujours la bibliothèque de classes d'extension UploadFile pour télécharger des fichiers, et la méthode d'utilisation reste inchangée. Le même code sera téléchargé dans le répertoire spécifié lors de l'exécution locale. Lors de l'exécution sur SAE, le service de stockage sera automatiquement utilisé pour télécharger les fichiers vers le stockage spécifié. Tout d'abord, vous devez créer un domaine de stockage sur la plateforme SAE pour stocker les fichiers téléchargés :

http://sae.sina.com.cn/?m=storage

Vous pouvez le créer ici Plusieurs domaines. Le domaine vers lequel nos fichiers seront téléchargés est déterminé par le premier nom de répertoire du chemin de téléchargement. Par exemple :

$upload->savePath = &#39;./Public/Uploads/&#39;;
Copier après la connexion

sera téléchargé sur le domaine nommé Public. Vous n'avez pas besoin de créer le dossier Uploads dans ce domaine, le service de stockage de SAE le créera automatiquement pour vous.

Problème d'adresse d'image :

Nous utilisons la classe UploadFile pour télécharger des images. Les adresses de navigation des images en local et sous SAE sont différentes. Par exemple, il y a une image avec l'adresse "/Public/upload/1.jpg", /Public est une variable de substitution de modèle, et elle sera remplacée par l'adresse du répertoire où se trouve le dossier Public que nous pouvons visualiser. via la fonction de code source du navigateur. Quel est l'effet après le remplacement ? Comme vous pouvez le voir, il est remplacé par "/Public/upload/1.jpg". Mais sur SAE, les images ne sont pas dans le répertoire Public/upload, mais dans le stockage. Nous devons remplacer /Public/ par le nom de domaine du stockage afin qu'il puisse être affiché normalement sur SAE.

Nous définissons le code suivant dans le fichier de configuration propriétaire SAE Conf/config_sae.php :

<?php
return array(
 &#39;TMPL_PARSE_STRING&#39;=>array(
   &#39;/Public/upload&#39;=>sae_storage_root(&#39;Public&#39;).&#39;/upload&#39;
 )
);
Copier après la connexion

De cette façon, il Remplacez /Public/upload par l'adresse de stockage et l'image pourra être affichée normalement sur SAE.

Problème de suppression de fichiers :

Étant donné que les fichiers téléchargés sont stockés localement et dans SAE, nous ne pouvons pas supprimer les fichiers directement en utilisant la suppression du lien. La version SAE de ThinkPHP a ajouté la fonction sae_unlink pour assurer la compatibilité. Par exemple :

sae_unlink(&#39;./Public/Uploads/xxx.jpg&#39;);
Copier après la connexion

Lors de l'exécution locale, les images du dossier Public/Téléchargements seront supprimées. Lors de l'exécution sur SAE, les images du stockage dont le domaine est public seront supprimées. Le fichier domian que cette fonction supprimera est également déterminé par le premier nom de répertoire du chemin.

Traitement des images

Le moteur SAE effectue également un traitement automatique des images. Les différences entre les plateformes locales et SAE sont les suivantes :

Explication détaillée des considérations liées au développement SAE de ThinkPHP

你完全不用去学习怎么用SaeImage生成缩略图,也不用学习SaeVcode服务怎么用,你还是按照以前的方式使用ThinkPHP进行验证码和缩略图功能就可以了。

使用验证码的时候需要注意,在本地运行时验证码默认为数字形式,而在SAE上运行时验证码为数字+字母形式,而且存在字母大小写问题。如果你希望验证码区分大小写的话,需要将验证码统一转化为大写后进行匹配。

如:

if(md5(strtoupper($_POST[&#39;verify&#39;]))!=$_SESSION[&#39;verify&#39;]){
 //验证错误处理代码
}
Copier après la connexion

日志记录

SAE版ThinkPHP同样实现了生成系统日志功能,在本地运行会将日志记录到项目的项目的Runtime/Logs文件夹下,而在SAE上运行会将日志记录到SAE平台的日志中心:

http://sae.sina.com.cn/?m=applog

请在搜索框选择中的下拉菜单处选择“debug”进行查看。

Trace信息

建议在开发程序时配置SHOW_PAGE_TRACE=>true 开启页面Trace信息。开启后,代码在SAE环境下运行时会显示一些SAE独有的Trace信息,有助于我们开发。你可能会到以下trace信息。

模板缓存:Trace信息名称为“[SAE]模板缓存”

在SAE下不会将模板编译缓存生成在Runtime目录下,而是存放在Memcache中。如果你想查看模板编译后的缓存,这里显示的就是模板缓存在Memcache中的缓存名称。你可以在SAE的memcache服务管理平台输入缓存名称得到缓存内容:

http://sae.sina.com.cn/?m=mcmng

注:你看得的缓存内容,都是以一串数字开始,这数字和缓存内容无关,是记录的缓存生成时间。

核心缓存:Trace信息名称为“[SAE]核心缓存”

它记录的是核心编译缓存在Memcache中的缓存名称。如果你要获得核心编译缓存,比如我们要用核心编译缓存代替入口文件的时候。你可以在SAE的Memcache服务管理平台 输入这里记录的缓存名称获得。

注:

在开启调试时不会生成核心编译缓存,如果你获得核心编译缓存,请先关闭调试。

缓存内容开头的数字是记录的缓存生成时间,请将数字去掉后再作为入口文件。

静态缓存:Trace信息名称为“[SAE]静态缓存”

它记录了生成的静态缓存在KVDB中的名称。 目前SAE管理平台没有能直接输入KVDB名称获得内容的地方,大家需要自己写程序获取内容。

注:此Trace信息是在生成静态缓存的时候才会出现。如果你访问到的页面没有执行生成静态缓存的操作时,将不会有此条Trace信息。

隐藏index.php

SAE不支持.htaccess文件,但我们可以使用SAE提供的AppConfig服务实现伪静态。

在你项目的根目录建立config.yaml文件,代码为:

handle:
- rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1"
Copier après la connexion

这样就可以隐藏入口了。

比如这样的地址 http://serverName/index.php/Blog/read/id/1也能通过

http://serverName/Blog/read/id/1访问。

代码横跨性建议

SAE版ThinkPHP,是具有横跨性的,请不要破坏它的横跨性。比如,不要在项目配置文件中写和SAE数据库相关配置项。 自己写代码时,也要尽量做到横跨性,这样就可以让同样的代码既能在SAE下运行,也能在普通环境下运行, 使你在本地调试完后上传到SAE也不用修改任何代码就能运行。

下面是一些保持代码横跨性的建议:

(1)尽量少使用原生的SAE服务

能使用ThinkPHP自带函数替代的,尽量使用ThinkPHP自带函数。比如要使用SAE的KVDB服务,在ThinkPHP中完全可以用F函数代替。如果要使用SAE的Memcache服务,都使用S函数实现。 这样就不会导致你的代码从SAE转移到普通环境后性能很低。

个别SAE服务无法使用ThinkPHP自带函数代替的,才考虑使用原生的SAE服务。

(2)利用IS_SAE常量

ThinkPHP的SAE引擎增加了IS_SAE常量,能判断代码运行环境是普通环境还是SAE环境。如果你有段代码在普通环境和在SAE环境下实现方式不同,你可以使用IS_SAE进行判断后做不同处理或者加载不同的文件。

(3)利用SAE专有文件

在SAE惯例配置中,我们可以看见除了配置了固定的数据库配置项,还有一个SAE_SPECIALIZED_FILES配置项,它定义了系统专有文件。目前已经定义了UploadFile类和Image类的SAE专有文件,所以当我们的代码 import(“@.ORG.UploadFile”) 在本地运行时会按普通方式导入项目下Lib/ORG/UploadFile.class.php文件, 而在SAE上运行是系统检查到UploadFile.class.php有SAE专有文件,它导入的是SAE_SPECIALIZED_FILES配置项中定义的文件地址。这样实现了普通环境和SAE环境下同样的代码导入了不同类库,而类的调用方法都是一样的,只是现实方法不同,这样就能保证了代码的横跨性。

Vous pouvez également créer vous-même des fichiers propriétaires SAE. Vous pouvez placer les fichiers propriétaires dans le même répertoire que les fichiers ordinaires, afin que le système puisse reconnaître les fichiers propriétaires sans définir l'élément de configuration SAE_SPECIALIZED_FILE. Par exemple, si nous définissons un fichier nommé Image_sae.class.php dans le même répertoire que le fichier Image.class.php, lors de l'exécution sur le système SAE, lors de l'importation du fichier Image.class.php, il importera Image_sae.class à la place.

Si une bibliothèque de classes définit les deux fichiers propriétaires dans le même répertoire et est également définie dans l'élément de configuration SAE_SPECIALIZED_FILE, les fichiers propriétaires du même répertoire seront importés en premier. Il est recommandé, si vous devez créer un fichier propriétaire, de le créer dans le même répertoire que le fichier ordinaire.

Si la bibliothèque de classes importée ne contient pas de fichiers propriétaires SAE, les fichiers ordinaires seront également importés lors de l'exécution sous SAE.

Nous pouvons utiliser des fichiers propriétaires SAE pour encapsuler différentes bibliothèques de classes pour l'environnement normal et l'environnement SAE, mais les méthodes d'utilisation des bibliothèques de classes sont les mêmes, de sorte que le code client de la bibliothèque de classes est interfonctionnel. .

(4) Utiliser la configuration propriétaire SAE

Lorsque vous rencontrez des besoins de configuration SAE et d'environnement ordinaire qui sont différents, vous pouvez écrire la configuration d'environnement ordinaire dans le fichier de configuration du projet Conf/config.php , et écrivez la configuration requise par SAE dans la configuration propriétaire SAE Conf/config_sae.php.

J'espère que cet article vous aidera à concevoir des programmes PHP basés sur le framework ThinkPHP.

Pour des explications plus détaillées sur les questions nécessitant une attention particulière dans le développement SAE de ThinkPHP, veuillez prêter attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal