Example of Sending SMS in PHP Using AWS SNS

person sitting inside car with black android smartphone turned on
$client = AWS::createClient('Sns');
$sms = [
    'Message' => 'sms_content',
    'PhoneNumber' => 'sms_recipient',
    'MessageAttributes' => [
        'AWS.SNS.SMS.SenderID' => [
            'DataType' => 'String',
            'StringValue' => 'AD'
        ],
        'AWS.SNS.SMS.SMSType' => [
            'DataType' => 'String',
            'StringValue' => 'Transactional'
        ],
    ]
];
$result = $client->publish($sms);

php json_encode utf-8中文问题

utf-8字符json_encode为变成转成utf16编码,也就是介个样子:

$ ./php/bin/php -r 'echo json_encode("中文");'
"u4e2du6587"

可读性降低,最新的php 5.4的json_encode支持了UTF-8编码,可以把中文不编码直接输出。
那低版本怎么办呢?也有办法,封装成一个函数给大家分享一下:

function my_json_encode($var) {
    return preg_replace("/\u([a-f0-9]{4})/e",
      "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($var));
}

PHP中的拷贝

对象用等号赋值,只是引用,是浅拷贝,除非使用clone关键字。
而基本类型,int、float、string、array几种类型都是复制也是引用,不过有copy-on-write机制控制,感觉好像是直接复制,但是效率却高一些。基本类型如果想传引用,需要加一个&.
下面代码可以说明: Continue reading “PHP中的拷贝”

Linux中文件和目录的权限问题

最近搞了几个VPS玩,VPS一般来说内存都不多,配置轻量级的Nginx+PHP,折腾当中权限问题搞了半天。
大家都知道,Linux中文件和目录都有自己的权限,分为rwx三种,分别代表读、写、执行的权限。但是目录和文件又不一样,不能被写和执行,文件rwx三种权限与目录的对比如下:

权限 文件 目录
r 可以列表该目录中的文件
w 可以在该目录中创建或者删除文件
x 执行 可以搜索或者进入该目录

现在很多的博客代码都提供在线安装插件或者升级等方便的功能,但是如果权限设置的不正确就无法使用,比如《WordPress“执行请求操作,连接信息必需提供”解决方法》中提到就是这样的问题。
Continue reading “Linux中文件和目录的权限问题”

如何开启Gzip压缩

Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右,好处有二:

节省带宽这个对大多数人来说没什么,加快你网页的加载速度确是普适的。前面看到许多朋友都在介绍如何开启Gzip,但是个人感觉方法不甚全,听我给大家道来:
方法大概有三:在Contol Pannel开启Gzip、开启http服务器Gzip、利用php本身的Gzip。

1. 在Contol Panel开启Gzip

1.1 CPanel中开启Gzip

在“SoftWare and Services”那一栏中“Optimize Website”:

Continue reading “如何开启Gzip压缩”

64M内存的VPS能干点什么?

1. VPS相关参数

买的是HostingInside的VPS,参数:

  1. 台湾人办的;
  2. 服务器位于Fullerton, LA,美国西岸,国内速度不错,HE的网络;
  3. 一个ipv4地址,两个ipv6地址(这是我看上它的重要原因);
  4. 基于OpenVZ,64M内存,300MCPU,无Burst,不支持swap;

2.  配置Nginx+php跑WordPress

10.21中午11点半买的,一个多小时之后开通,然后紧接着该服务器所在机房网络出现故障,服务器离线2小时-__-。安装了debian5,占资源少得让你吃惊:

按照vpsee的方法换了几个软件,裸系统只占不到10M的内存,比起Windows那个吃内存的劲,让人暗爽。
Continue reading “64M内存的VPS能干点什么?”

Ubuntu Server覆盖安装Nginx并配置Etags & Expires

image Ubuntu是基于Debian的,继承了Debian的优良特性,apt就是其一。每次要装软件直接apt-get install解决问题,非常方便。但是源里的软件相对比较过时,并且缺乏定制性(比如软件的小插件等)。
Ubuntu 9.04里带的Nginx是0.6.32版,据Jiucool情报讲,有漏洞。当时就想编译安装一个,但是苦于缺少一些库又没时间一一添加而没有安装。今天Ubuntu源里的Nginx更新到了0.6.35,修正了Bug,偶直接给Upgrade了一下。
这两天又折腾加速,YSlow评级要想到A的话,须让Nginx给静态元素加Etags,需要加个插件。加插件的话就要重新编译Nginx,干脆一不做二不休,干掉现在的0.6,搞个0.7.62玩。
最方便就是覆盖掉现在的老版本的Nginx,服务那些脚本就都不用重写直接可以用了。 Continue reading “Ubuntu Server覆盖安装Nginx并配置Etags & Expires”