493333王中王开奖结果-王中王开奖一马中特

493333王中王开奖结果让不同类型的网络可以可靠地互相联接,王中王开奖一马中特拥有规模庞大的原创游戏,在这里您将享受的不一样快乐。

网络频道

当前位置:493333王中王开奖结果 > 网络频道 > Laravel 5.1 on SAE环境开发教程【附项目demo源码】王

Laravel 5.1 on SAE环境开发教程【附项目demo源码】王

来源:http://www.soniaLorenzana.com 作者:493333王中王开奖结果 时间:2019-09-30 17:05

因为某些原因,我还是自己测试了下官方的版本,测试通过了写文件,上传文件,删除文件,获取文件的公开网址这几个方法。

然后就是configapp.php的相关配置,根据环境判断来注入相应的服务提供者

有了这个可方便多了,至少避免了SAE Runtime的各种限制、、

class Writer extends IlluminateLogWriter {
 protected function useSaeLog($level = 'debug'){
 $level = $this->parseLevel($level);
 $this->monolog->pushHandler($handler = new SaeLogHandler($level));
 $handler->setFormatter($this->getDefaultFormatter());
 }
 public function useFiles($path, $level = 'debug'){
 if (SAE) {
 return $this->useSaeLog($level);
 }
 parent::useFiles($path, $level);
 }
 public function useDailyFiles($path, $days = 0, $level = 'debug'){
 if (SAE) {
 return $this->useSaeLog($level);
 }
 parent::useDailyFiles($path, $days, $level);
 }
}

swift接口:

#1 putenv()函数禁用

https://github.com/rackerlabs/php-cloudfiles

#6 服务提供者缓存

给出代码地址:https://github.com/acczefly/php_sae_storage

这里解释下为什么要在bootstrapapp.php中来定义是否为SAE环境,原因很明确了,就是要注入相应的应用程序实例和Http实例,然后再这里也定义一下Storage

OpenStack/Rackspace官方的PHP版本在这:

总结

  类型:Swift。
  服务器:auth.sinas3.com
  端口:443(默认)
  用户名:应用AccessKey(在应用“汇总信息”页面中查看)
  密码:应用SecretKey(在应用“汇总信息”页面中查看)
填写完成后点击连接即可。如果弹出auth.sinas3.com, api.sinas3.com相关证书问题,请选择信任。

#1 putenv()函数禁用
#2 模板编译
#3 缓存类
#4 日志处理
#5 Session类
#6 服务提供者缓存

SAE员工的SAE移植版本:

if(SAE){
 $removeProviders = [
 IlluminateCacheCacheServiceProvider::class,
 IlluminateSessionSessionServiceProvider::class,
 ]; 
 for($i = 0; $i < count($app['providers']); $i++){
 if (in_array($app['providers'][$i], $removeProviders)) {
 unset($app['providers'][$i]);
 }
 }
 $app['providers'] = array_merge($app['providers'],[
 IlluminateCloudSAECacheSaeCacheServiceProvider::class,
 IlluminateCloudSAESessionSessionServiceProvider::class,
 IlluminateCloudSAEStorageStorageServiceProvider::class,
 IlluminateCloudSAESegmentSegmentServiceProvider::class,
 ]);
 $app['aliases']['Storage'] = IlluminateCloudSAEStorageStorage::class;
 $app['aliases']['Segment'] = IlluminateCloudSAESegmentSegment::class;
}

http://php-opencloud.com/

namespace IlluminateCloudSAE;
use AppHttpKernel as DefaultKernel;
class Kernel extends DefaultKernel{
 /**
 * The bootstrap classes for the application.
 *
 * @var array
 */
 protected $bootstrappers = [
 'IlluminateFoundationBootstrapDetectEnvironment',
 'IlluminateFoundationBootstrapLoadConfiguration',
 'IlluminateCloudSAELogConfigureLogging',
 'IlluminateFoundationBootstrapHandleExceptions',
 'IlluminateFoundationBootstrapRegisterFacades',
 'IlluminateFoundationBootstrapRegisterProviders',
 'IlluminateFoundationBootstrapBootProviders',
 ];
}

https://github.com/xiaosier/php-saestorage

该问题主要还是因为SAE的本地环境写入被禁止,所以我使用了Wrapper来把编译后的模板文件写入到Storage。本来是打算写到KVDB中,但是会出现一些奇奇怪怪问题,原因不明。

我对比了下移植版本和官方的版本,改动不大,基本可以直接使用官方的版本。

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

既然可以使用GUI客户端,类型为Swift,那么也是可以使用OpenStack的php客户端来进行操作的,非SAE的PHP环境,适合自己的VPS或者虚拟主机等。

Laravel 5.1使用了这个putenv()函数来向当前的环境中动态添加变量,但是很遗憾的是SAE的PHPRuntime禁用了该函数,所以只能使用折中的方法来实现。当初本来想Hook掉该实现,后来觉得没必要,这个函数在Laravel 5.1中主要是为了使用.env配置文件来统一团队的配置。所以我是直接禁用了该功能,在vendor/vlucas/phpdotenv/src/Dotenv.php的86行左右,直接注释掉该函数,然后把所有的配置信息都写到config文件夹的相应配置文件中。虽然解决了该函数被禁用的问题,但是实现的不够优雅,希望有大神可以给出更加优雅的实现。

SAE Storage 可以使用客户端管理:开发者可以使用Cyberduck客户端,将大文件上传至Storage,我们建议单个文件大小不超过2GB。

由于Laravel 5.1相比于Laravel 4有很多的改动,不仅以目录结构更加清晰,而且功能也更丰富。但是Laravel官方还是没有原生支持SAE环境(估计永远不会支持),所以我就做了一个移植版本,可以很优雅的切换本地和SAE环境。

这样还不行,还必须重写日志的部分实现

在应用程序的启动过程中,laravel会在bootstrap/cache/services.json生成服务提供者的缓存,为了加快下次访问的速度,依旧是本地写的问题,解决方案很简单,使用Storage的Wrapper即可
以上这些问题解决后,差不多就算成功了。最后修改下bootstrapapp.php来实现本地与SAE环境的优雅切换,主要是判断环境然后生成SAE专有应用实例和注入相应的Http内核。

注意要在相应的Storage中建立compiled文件夹。

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

#4 日志处理

软件点击此处本站下载.rar)。

本文由493333王中王开奖结果发布于网络频道,转载请注明出处:Laravel 5.1 on SAE环境开发教程【附项目demo源码】王

关键词: