2013-05-29
昨天收到了新浪SAE发来的邮件,内容大概是自5月28日起,用户通过实名认证即免收应用租金并一次性赠送2000云豆(价值20元人民币)。对广大喜欢折腾的网友来说,这应该算是好事一桩了,毕竟又多了一个选择的机会。
邮件详情如下:
从技术成熟度上来说,SAE无疑是所有XAE中最成熟的一个。首先,SAE是所有XAE中发展最早的,运营时间和技术成熟程度都占用优势;其次,SAE也是所有XAE中服务最全的一个,支持PHP、Java、Python等语言环境,还支持MemCache、Storage、KVDB等服务,这远不是一般的虚拟主机所能比拟的;SAE推出的“云商店”,是一种在PAAS下新的盈利方式,不论成功与否,这种思路十分值得赞扬。 阅读全文 »
2012-07-18
新浪云商店是由新浪SAE推出的一款云计算产品。云商店可以看做是新浪SAE“应用仓库”的升级版,消费者不需要具有任何技术基础,只需要鼠标点几下,就可以成功安装一个应用程序。而对于开发者,则可以通过为云商店开发应用来获取利润。
目前云商店尚处于内测阶段,所以上架的应用比较少,目前上架的应用仅有开源博客软件Wordpress。至于价格方面,则只是每月象征性的收取一元钱。
当“云商店”的应用安装成功后,系统会为应用分配一个*.1kapp.com的域名(如mawenjian.1kkapp.com)。通过nslookup我们不难发现,“云商店”应用使用的IP地址和SAE是完全相同的。 阅读全文 »
2012-05-24
众所周知,新浪SAE(Sina App Engine)的线路情况绝对是国内最厉害的,无论是中国电信、中国联通,还是移动或者教育网,其速度甚至不是国内的一些低级的CDN所能比拟的;即使是新浪SAE自己的CDN系统(通过lib.sinaapp.com可以发现),线路也不及SAE。
新浪SAE的硬伤就是PHP程序需要进行移植才能使用,所以一定程度上也限制了其的发展。虽然随着新浪SAE的不断发展这种状况有所缓解,但是还是不能从根本上有所改变。
看到新浪SAE如此优越的线路,我昨天心血来潮,写了一个基于新浪SAE的CDN反向代理程序。程序的原理很简单,当客户访问SAE资源的时候,根据客户请求资源的URL和相应的缓存规则进行匹配;然后根据匹配的规则,如果SAE上有缓存并且尚未过期,则直接发出缓存内容进行相应;否则SAE从源服务器抓取数据并缓存。
我的缓存是用MC来完成的。按理来说,KVDB作为持久化存储,而且存储容量较MC大很多,选择它是自然而然的事情了。但是因为我的WWW站点存储的是一些HTML文件,占不了多大的空间,所以用内存级的MC问题也不大。再说了,从速度来说,MC较KVDB要快。
如果你对我的这个小程序有兴趣的话,你可以修改本地的HOSTS文件,将mawenjian.net的IP地址指向SAE的任意一个IP地址,比如115.182.15.250,你是不是发现速度有所提升了呢?
内存级的缓存,再加上国内顶尖的线路,绝对是极客杀人放火、居家旅行的必备杀器!嘎嘎! 阅读全文 »
2012-03-24
昨天登录新浪SAE,我发现SAE已经支持绑定独立域名了。绑定方式很简单:
- 打开你要绑定域名的应用,转到“应用设置;
- 在独立域名设置中选择“新增”;
- 输入你要绑定的域名,绑定;
- 将要绑定的域名CNAME到 SAE给出的CNAME地址;
- 添加一条SAE给出的随机域名的A记录,以验证归属;
- 至此,over。
虽然SAE支持域名绑定是一个很大的进步,但是不得不说,这个域名绑定功能很鸡肋。 阅读全文 »
2012-02-12
我寒假期间写了一个基于新浪SAE的网站短信报警应用,今天和大家分享一下。
这个应用的原理很简单,就是每间隔一段时间,抓取监控网站上的内容并进行分析,一旦抓取出现错误,则判定为网站出现错误。如果错误次数超过设定值,该应用就调用短信和邮件发送API,向指定的手机和电子邮箱发送报警信息。待网站恢复正常后,系统依旧会向用户发送信息,告诉用户“你的网站已经恢复正常了”。 阅读全文 »
2011-12-28
今天我把博客从SAE搬出来了,搬到了BlogHost的BGP博客主机。尽管传说是六线BGP线路,但因为是第一次使用BlogHost的服务,所以我对博客的速度还不是很了解。希望各位网友能够给我下反馈,我也好做相应调整。
根据我所在的教育网来看,该线路和我原先使用的SAE无论ping值还是速度都有一定差距。为了优化教育网线路,我对教育网用户采用了CDN加速,页面默认缓存半小时。从加速后的效果来看,速度还不错。
下一步是公网了,如果反馈的效果不怎么样的话,我就豁出去了,全用CDN加速。
本来SAE那儿还有2W+云豆,速度也不错,但间歇性的数据库查询失败实在让人蛋疼。甚至就是因为使用SAE被百度拔毛,我也忍了,毕竟Google收录一直正常,我对百度也没抱多大希望。本来打算就这么凑活着用呢,但就在前两天,我发现仅剩的两个百度快照其中之一便是Database Error!由此可见,SAE不知道出过多少次错误呢。这回实在不能忍了,搬!
虽然自己写博客并不打算成为名博,也不打算赚钱,但最起码的正常访问要能保证吧?如果这都保证不了,没办法,只能搬走了。无论心中有无不舍,搬了,走了。。。 阅读全文 »
2011-11-28
鉴于SAE环境的特殊性,WordPress在常规PHP环境下的评论邮件自动回复功能不能正常使用,需要做一些改动才可以。
首先我要说明的是,我要实现的是让访客决定是否需要在有人回复他的时候接收邮件。
使用SAE Editor,进入所用主题的编辑界面,在functions.php文件中的<?php和?>之间添加以下函数:
/* 所有回复都发邮件 马文建的博客 https://mawenjian.net/ */
function comment_mail_notify($comment_id) {
$admin_notify = '1'; // admin 要不要收回复通知 ( '1'=要 ; '0'=不要 )
$admin_email = get_bloginfo ('admin_email'); // $admin_email 可改为你指定的 e-mail.
$comment = get_comment($comment_id);
$comment_author_email = trim($comment->comment_author_email);
$parent_id = $comment->comment_parent ? $comment->comment_parent : '';
global $wpdb;
if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == '')
$wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
if (($comment_author_email != $admin_email && isset($_POST['comment_mail_notify'])) || ($comment_author_email == $admin_email && $admin_notify == '1'))
$wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
$notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : '0';
$spam_confirmed = $comment->comment_approved;
if ($parent_id != '' && $spam_confirmed != 'spam' && $notify == '1') {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 发出点, no-reply 可改为可用的 e-mail.
$to = trim(get_comment($parent_id)->comment_author_email);
$subject = '您在 [' . get_option("blogname") . '] 的留言有了回复';
$message = '
<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
<p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
<p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />'
. trim(get_comment($parent_id)->comment_content) . '</p>
<p>' . trim($comment->comment_author) . ' 给您的回复:<br />'
. trim($comment->comment_content) . '<br /></p>
<p>您可以点击<a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回复的完整內容</a></p>
<p>还要再度光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>(此邮件由系统自动发送,请勿回复.)</p>
</div>';
$from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
wp_mail( $to, $subject, $message, $headers );
//echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
}
}
add_action('comment_post', 'comment_mail_notify');
/* 自动加勾选栏 */
function add_checkbox() {
echo '<input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><label for="comment_mail_notify">有人回复时邮件通知我</label>';
}
add_action('comment_form', 'add_checkbox');
// -- END ----------------------------------------
如果是普通PHP环境的话,完成此步就可以实现回复的功能了。 阅读全文 »
2011-11-22
要想把wp插件成功移植到sae上,首先应该搞清sae支持的受限PHP语言和完整版本的PHP语言有何区别。我认为SAE和完整版PHP有如下区别:
最显著的不同莫过于文件操作和文件存储了。首先说文件操作,SAE出于安全性考虑,禁用了很多本地文件操作函数,并且没有提供替换的函数,我认为将来开放的可能性也不是很大,因为这关系到整个云平台的安全性。然后是文件存储,SAE采用和Amazon S3类似的存储技术,将静态文件存放到单独的服务器上,尽管这样有利于文件的集中管理,也有利于使用CDN技术将静态文件分发到网络边缘,但同时带来了一个问题——即不能使用PHP原生函数进行静态文件的存取操作,所以这部分函数需要替换掉。
其次,不同于Apache的.htaccess文件,SAE使用AppConfig文件来对web服务进行配置。如果wp需要使用urlrewrite等功能的,注意对此进行相应更改。
原先SAE不支持的cUrl函数、GD库等函数,现在已经通过函数重载实现,所以这部分可以不必考虑。
别的嘛,暂时没想出来,以后接着补充。
2011-09-09
由于新浪SAE(Sina App Engine)禁用了一些本地文件的操作函数,导致SAE环境下并不能直接使用WordPress的站点地图功能。为解决此问题,有热心的网友将Google XML Sitemaps插件移植到了SAE,也就是Google XML Sitemaps For SAE插件。该插件成功地解决了SAE环境下无法使用站点地图的问题。
Google XML Sitemaps For SAE插件通过将生成的SiteMap XML存放到Storage中,成功地绕开了SAE环境的限制。但是,其同时也带来了另外一个问题:由于SiteMap存储在Storage中,所以SiteMap的URL是类似于http://mawenjian-wordpress.stor.sinaapp.com/sitemap.xml这样的格式,SiteMap URL中的域名和你博客的域名显然不一致。大家都知道,在Google Webmaster中提交SiteMap的时候,需要保证你的SiteMap在你的站点的域名之下。所以,生成的这个站点地图就悲催了。。。
好在SAE提供了强大的FetchUrl功能,我写了一个简答的抓取页面Sitemap.php,当搜索引擎访问这个页面时,由SAE去Fetch前面生成的Sitemap文件,这样,路径问题就可以成功解决了。比如:我的站点地图的URL是:https://mawenjian.net/sitemap.php,而它实际上则是Fetch的Storage中的文件,只不过路径改变了而已。 阅读全文 »