这样还不行,还必须重写日志的部分实现
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);
}
}
#5 Session类
Laravel5.1的session依旧是本地写的问题,参考了Laravel4的移植,使用了memcache作为session的实现,具体可以结合缓存部分来处理
#6 服务提供者缓存
在应用程序的启动过程中,laravel会在bootstrap/cache/services.json生成服务提供者的缓存,为了加快下次访问的速度,依旧是本地写的问题,解决方案很简单,使用Storage的Wrapper即可
以上这些问题解决后,差不多就算成功了。最后修改下bootstrapapp.php来实现本地与SAE环境的优雅切换,主要是判断环境然后生成SAE专有应用实例和注入相应的Http内核。
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
define('SAE',true);
define('SAE_STORAGE', 'laravel');
if(SAE){
$app = new IlluminateCloudSAEApplication(
realpath(__DIR__.'/../')
);
$app->singleton(
IlluminateContractsHttpKernel::class,
IlluminateCloudSAEKernel::class
);
}else{
$app = new IlluminateFoundationApplication(
realpath(__DIR__.'/../')
);
$app->singleton(
IlluminateContractsHttpKernel::class,
AppHttpKernel::class
);
}
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
IlluminateContractsConsoleKernel::class,
AppConsoleKernel::class
);
$app->singleton(
IlluminateContractsDebugExceptionHandler::class,
AppExceptionsHandler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;







