我们发现有部分同学的邀请码未激活,经过回访发现以下问题:
- 部分邮箱会将sae的邀请邮件归档到垃圾箱,请留意查看.
- 189/133等号码段的手机可能收不到我们发的短信验证码,如果您收不到手机验证码,请换用朋友和同事的移动手机试试.
- 目前SAE暂不开展大陆以外的业务,对港台和国外的同学我们深表歉意.
我们发现有部分同学的邀请码未激活,经过回访发现以下问题:
由于sae的资源使用量有些超出我们的预计,为保证服务质量,暂时进行一些调整.
其他配额不变,包括:
SAE上用的Wordpress wp4sae已经升级,使用2.9.1中文版,采用sae alpha2 api,数据库使用replication,Mc做Object_cache,欢迎大家使用.
下载和安装说明 http://code.google.com/p/wp4sae/
出于性能和分布式结构的考虑,SAE环境上是不允许写本地文件的.
就是说,你不能用php在当前目录生成文件.
需要在本地生成文件的情况大致分以下几种:
对于缓存来说,我们推荐使用memcached.它基于内存,速度也非常快.
而配置文件,我们建议您在本地做好基础配置(如数据库信息之类),直接通过SDK发布;而需要动态配置的部分,则放置在数据库中.
接下来是静态文件,这部分文件您可以放置到Storage中,存放到Storage还有个好处就是可以通过getUrl方法直接获取到下载链接.
以上几种情况都可以通过我们提供的替代方案解决,但是临时文件却始终是个问题.
像Smarty的编译模板,当然,还有为数众多的函数,只支持文件名参数.
为了解决这个问题,TmpFS就闪亮登场了.
在Alpha2上,我们提供了一个新的常量:SAE_TMP_PATH(在”预定义变量”页面最下方).你可以往这个目录下写入临时文件.
不过特别需要注意的是,这里的临时文件有着特别的生命周期,当前页面的请求执行完以后,这个文件就会被删除.
用代码示范下吧:
在一个php文件中
file_put_contents( SAE_TMP_PATH . '/mycode.txt' , 'dummy test' );
echo file_get_contents( SAE_TMP_PATH . '/mycode.txt' ); // will echo dummy test;
如果是两个独立的php文件.
a.php
file_put_contents( SAE_TMP_PATH . '/mycode.txt' , 'dummy test' );
b.php
echo file_get_contents( SAE_TMP_PATH . '/mycode.txt' ); // 出错啦,文件已经不存在了...
说到这里,大家应该明白,用它做缓存不但不会带来性能提升,反而会带来额外的开销.
那么在什么地方需要用TMPFS呢?
取得一张图片的宽和高等信息
$f = new SaeFetchurl();
$img = $f->fetch('a url of a img');
file_put_contents( SAE_TMP_PATH . '/tmp.jpg' , $img );
print_r( getimagesize( SAE_TMP_PATH . '/tmp.jpg' ) );
Sina App Engine Alpha2已经上线,欢迎大家使用.如遇样式显示不正常请用力刷新您的浏览器.
在新版上线后,我们第二批邀请码的申请和发放也开始了.
本次邀请码总共发放500个.将在本周一到周五每天放出100个.
欢迎大家申请,对于有Web开发经验者我们将优先发放.
这里是申请页面的地址 http://sae.sina.com.cn/?m=inviterequest
XHProf是Facebook放出的轻量级调试工具.和Xdebug相比,XHProf更加易用和可控.尤其是生成流程图和调试数据对比的功能很好很强大.
在Alpha2中,SAE已经集成了XHProf工具,从此大家可以方便的利用XHProf进行调优了.
下边我们就来看看如何使用吧.
首先要说明的,调试的数据是存放在用户自己的Storage中的,所以需要在Storage中创建一个专用的domain来存放.
进入Storage,新建一个名为 xhprof 的domain.

然后,我们在需要调试的页面进行数据捕获.
在要进行调优的代码前后分别加上 sae_xhprof_start() 和 sae_xhprof_end() 就可以了.
这里以 开发手册之开发实例PPT中的图片书签 为例.我们给图片处理部分加上调试代码.
if( isset( $_REQUEST['pic_url'] ) )
{
sae_xhprof_start();
$header = $error = '';
if( !$img_data = fetch_url( $_REQUEST['pic_url'] , AKEY , SKEY , $header , $error ))
die( 'can\'t get contents of ' . $_REQUEST['pic_url'] . ' error : ' . $error );
$img = sae_image_init( AKEY , SKEY , $img_data );
$img_data = $img->convertFormat('png');
$small_data = $img->resize( 100 );
$name = time() ;
$s = sae_storage_init( AKEY , SKEY );
if( !$s->writeData( ST_DOMAIN , 'photo_' . $name . '.png' , $img_data ) )
die( 'save img data error' );
else
$url = $s->getFileUrl( ST_DOMAIN , 'photo_' . $name . '.png' );
if( !$s->writeData( ST_DOMAIN , 'photo_small_' . $name . '.png' , $small_data ) )
die( 'save img data error' );
else
$small_url = $s->getFileUrl( ST_DOMAIN , 'photo_small_' . $name . '.png' );
$sql = "INSERT INTO `pic` ( `url` , `small_url` , `timeline` ) VALUES ( '" . $mysql->escape( $url ) . "' , '" . $mysql->escape( $small_url ) . "' , NOW() )";
$mysql->run_sql( $sql );
if( $mysql->errno() != 0 )
die( 'Mysql error ' . $mysql->error() );
echo '
';
sae_xhprof_end();
}
现在我们保存一张图片.然后进入XHProf页面,就能看到刚才的调试数据了.

点击查看链接,就能看到之前产生的调试数据.

通过表格,我们可以清楚的看到每一个函数消耗的时间.更强大的是,点击
可以以图像的方式展现本次调试数据.由于生成图像对CPU的消耗还是比较大,目前每个应用每天可以生成100张调试图.
上图就是本次访问的详细过程,点击可以查看大图.其中最消耗时间的部分已经加粗和标红了.
可以看到,图像处理接口是耗时最多的部分.
我们并不想用户每次访问都生成调试数据,一来会降低程序的性能,二来也会浪费存储空间.其实只要按条件调用sae_xhprof_*函数就可以了.
比如,每10000次请求,记录一次随机数据.
if( rand( 1,10000 ) == 2 )
{
$xh_open = true;
sae_xhprof_start();
}
// 业务代码
if( isset( $xh_open ) && $xh_open )
{
sae_xhprof_end();
}
或者,传入?debug=1时才记录.
if( isset( $_REQUEST['debug'] ) && $_REQUEST['debug'] == 1 )
{
$xh_open = true;
sae_xhprof_start();
}
// 业务代码
if( isset( $xh_open ) && $xh_open )
{
sae_xhprof_end();
}
更NB的是,XHProf还支持调试数据的对比.我们修改原来的代码,换用新的接口,然后捕捉新的数据.
重新保存一张图片后,刷新 XHProf服务的页面,已经有多条记录了.
划选两行数据记录最前边的复选框后,会出现比较链接.
点击”比较选中项”.可以查看到两次数据的对比.其中绿色是速度有改进的地方,红色是速度反而变慢的地方.
点击[View Regressions/Improvements using Callgraph Diff],可以通过图像来观察这次的改进.
就像大家看到的,XHProf是非常有用的一个工具,即使是在SAE平台以外开发,也很推荐大家安装使用.
有了如此强大的调试工具,各位更是如虎添翼,期待大家写出更精彩的代码.
首先有一个比较遗憾的消息告诉大家,因为服务器本周才刚刚到位,我们原定元旦发布的alpha2只能延迟发布.预计延迟时间为1~2周.对此我们非常抱歉.
虽然不能马上用上Alpha2,但是我们还是可以先睹为快.下面就让我们来看看新版SAE有哪些新功能吧.
双击am.exe启动SDK,会出现一个登录框.

填上你注册SAE时用的邮件地址和密码,点击OK.

之后就顺利进入SDK的主界面了.
整个界面分为三部分.左侧的App和版本列表框;右上的文件列表框和右下的提示信息框.
App和版本列表框可以对你创建的应用和版本进行列表,当你选中其中一个版本的时候,SDK会自动下载对应的代码,并显示在右上的文件列表框中.

如上图所示,App和版本列表框部分还有创建新版本和设置某版本为应用默认版本的功能.
当你选中一个应用的某一版本时,SDK将自动下载代码,并显示在文件列表框.

在文件列表框中,通过右键可以进行常见的文件操作,如创建文件和目录,编辑和删除文件.
当然不会少了上传文件到服务器,在某个文件上点击右键,并选中Upload,可以将这个文件上传到服务器;点击Upload All,则可以将整个版本的代码发布到服务器上;建议选择文件列表框下setting里边的 Only upload modified files,这样每次只上传有过修改的文件.
提示信息框就不用多讲了,SDK输入的信息都会在这里.
为了满足大家(和我们自己^__^)对界面不同的偏好,我们特意精选了5套皮肤供大家使用.这个功能藏在Operations->skin里边.

除了界面上改进外,命令行版本的功能也有很多改进.最大的变动是原来分散的多个php文件全部合并到了am.php中;你只需要运行
php.exe am.php 命令(upload|downlod|create|quick)
即可执行对应的命令.详细的说明,可运行
php.exe am.php
查看详细的命令和参数格式.
其他的变动包括
这次重点是web方向,稍后我们会陆续发布系统开发,系统架构等职位的招聘,敬请关注.
SAE致力于提供高品质的应用云.
未来新浪公司的相当一部分新应用,都会以SAE作为其平台,我们预计未来一到两年内,SAE上仅内部PV将达到千万级别.
加入SAE Team,你将有机会和这个平台一起成长.
我们将为你提供有竞争力的薪水,充足的成长空间,轻松的氛围和满满的成就感.
如果你真正喜欢Web开发,喜欢新技术,期望用自己的代码改变这个世界,那么这里将会是你的乐园.
参与以下工作:
参与以下工作: