Category Archives: php

php 成长记录

关于SAE Storage接口

已经封装了和SAE操作类似的接口,demo见以上Github,操作手册见 http://apidoc.sinaapp.com那么在提交的代码中我也给出了一段demo,那个这个demo就演示了如何在你自己的服务器上使用SAE提供的云存储服务。使用此接口可以抛开storage对于SAE runtime的依赖,使我们可以在自己的web服务器上通过storage的rest api接口来操作我们存储在storage中的文件包括创建、管理、删除 domain(在这里成为container),创建、管理、删除 domain中的文件(这里称为object)。

代码下载地址

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

获取domain列表和信息

Continue reading

Sina App Engine(SAE)入门教程(10)- Cron(定时任务)使用

参考资料

Cron能干什么?

cron 可以定时的触发一个脚本,在sae上最大的频率是一分钟一次。你可以用其来完成自己需要的业务逻辑,例如定期的抓取某些网页完菜信息的采集,定期的触发一个清理数据库的脚本等等。

Cron怎么用?

Cron作业只能调用应用默认版本的URL,其添加和删除都需要通过代码发布完成。例如你的默认版本是1,那么你在版本2的config.yaml设置的cron将是无效的,不会被执行

操作方法为:编辑 APPNAME/1/config.yaml (APPNAME是你的应用名,1代表版本号),输入cron作业的描述。目前SAE平台支持 使用类自然语言或者unix crontab语言描述cron任务。类自然语言示例:

name: APPNAME
version: 1
accesskey: abc
cron:
    - description: cron test
          url: mycron/test.php
          schedule: $2 day of october 19:00
          timezone: Beijing
    - description: another cron test
          url: mycron/another_test.php
          schedule: every 10 mins
          timezone: Beijing

unix crontab 语法示例:

name: APPNAME
version: 1
accesskey: abc
cron:
    - description: cron test
          url: mycron/test.php
          schedule: 00 19 2 10 *
    - description: another cron test
          url: mycron/another_test.php
          schedule: */10 * * * *

然后上传应用代码.

以上config.yaml定制了两个cron作业,分别是代码目录mycron/下的test.php和another_test.php。 校时时区是北京时间,而定时分别是每年10月2号的19:00运行和每10分钟运行。

具体使用的实例

在cron目录下创建一个cron.php文件,文件内容为:

<?php
echo "hello lazy!";

设置config.yaml,修改如下:

---
name: lazydemo
version: 1
...
cron:
    - description: cron test for tech
          url: cron/crom.php
          schedule: every 1 mins
          timezone: Beijing

上传代码,那么 此时在sae的管理面板上我们应该就能看到刚才设置的cron了。

Sina App Engine(SAE)入门教程(8)- SaeFetchurl使用

fetchurl是什么?

FetchURL是SAE为开发者提供的分布式网页抓取服务,用来同步的抓取http页面,FetchURL针对国内的网络的做了优化,内部有调度系统,尽可能保证用户快速的抓取到目标页面。在SAE上使用FetchURL非常简单,只需要调用sae_std_lib中的几个简单的函数即可。

FetchURL是sae初期不支持curl时的替代方案,现在sae已经完全兼容 curl!

Continue reading

Sina App Engine(SAE)入门教程(6)- memcache使用

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。sae同样提供memcache 缓存服务。
Continue reading

Sina App Engine(SAE)入门教程(5)- SaeSegment(中文分词服务)使用

分词能干什么?

  • 提取一篇文章的关键字
  • 检测特定的段落中有没有违禁词
  • 智能机器人
  • …..尽你所想

开启SAE 分词服务

首先你需要在sae的管理面板开始分词服务后才能使用sae的服务。具体的开启操作:

成功的开启之后可以写一段脚本试试看看分词的效果如何,代码如下:

filename:test_segment.php

<?php
header("Content-Type:text/html;charset=utf-8");
$str = '我是一个超级大懒鬼';
$seg = new SaeSegment();
$ret = $seg->segment($str, 1);
var_dump($ret);
?>

访问 :http://lazydemo.sinaapp.com/segment/test_segment.php 发现输出:

array(6) {
[0]=> array(3) { ["word"]=> string(3) "我" ["word_tag"]=> string(3) "123" ["index"]=> string(1) "0" }
[1]=> array(3) { ["word"]=> string(3) "是" ["word_tag"]=> string(3) "173" ["index"]=> string(1) "1" }
[2]=> array(3) { ["word"]=> string(6) "一个" ["word_tag"]=> string(3) "201" ["index"]=> string(1) "2" }
[3]=> array(3) { ["word"]=> string(6) "超级" ["word_tag"]=> string(2) "20" ["index"]=> string(1) "3" }
[4]=> array(3) { ["word"]=> string(3) "大" ["word_tag"]=> string(2) "10" ["index"]=> string(1) "4" }
[5]=> array(3) { ["word"]=> string(6) "懒鬼" ["word_tag"]=> string(2) "95" ["index"]=> string(1) "5" }
}

发现效果还不错,那么下面就是一个更综合的实例(来找一个网页中是否包含敏感词)来说明sae分词服务的应用。我们假设这里的敏感词只为几个,为了更简单的说明实例,在现实的应用中,可以把敏感词变成一个数组,推倒memcache中加速。我们假设此处的敏感词为:

array('fuck','av','苍老湿');

判断的脚本:

filename:segment_api.php

<?php
header("Content-Type:text/html;charset=utf-8");
$str = $_REQUEST['str'];
if($str == null)
{
        die('没有链接哇');
}
//获取指定链接的纯文本内容
$url_content = file_get_contents($str);
$cotent_strip_tags = strip_tags($url_content);//过滤下HTML标签
$cotent_strip_tags = iconv("gb2312", "utf-8", $cotent_strip_tags);//转换编码
//var_dump($cotent_strip_tags);
$seg = new SaeSegment();
$ret = $seg->segment($cotent_strip_tags,1,'utf-8');
foreach ($ret as $key) {
        $array_all[] = $key['word'];
}
$hot = array('fuck','av','苍老湿');
foreach($hot as $small)
{
        if(in_array($small, $array_all))
        {
                die('出现敏感词');
        }
}
echo '未发现敏感词';

可以测试:http://lazydemo.sinaapp.com/segment/segment_api.php?str=http://www.php100.com
http://lazydemo.sinaapp.com/segment/segment_api.php?str=http://lazydemo.sinaapp.com/segment/hello.txt

其中hello.txt的内容是:

fuck av

本实例所有代码打包下载地址:

http://lazydemo.sinaapp.com/segment/segment.zip

参考资料: