在 Web 开发中, 经常需要实现操作频率限制的功能, 以避免单个用户过度地消耗某项资源, 或者消除安全隐患. 例如, 限制某 IP 刷新页面的频率, 限制一个用户投票只能投一次, 等等.
要实现操作频率限制, 就要用到存储. 使用 SSDB 来存储, 可以支持海量用户的操作频率限制, 而且代码非常简洁高效.
Continue reading »
在 Web 开发中, 经常需要实现操作频率限制的功能, 以避免单个用户过度地消耗某项资源, 或者消除安全隐患. 例如, 限制某 IP 刷新页面的频率, 限制一个用户投票只能投一次, 等等.
要实现操作频率限制, 就要用到存储. 使用 SSDB 来存储, 可以支持海量用户的操作频率限制, 而且代码非常简洁高效.
Continue reading »
_throw($msg, $code)
抛出异常.
_redirect($url)
HTTP 301 跳转到指定的 URL, 该函数除了不能放在 try 代码块中外, 可以放在任何地方.
_url($url, mixed $param=array())
所有使用 iphp 框架的应用, 都应该使用 `_url()` 或者 `_action()` 函数来生成链接(URL), 而不是手动拼接字符串.
对于 PHP Web 开发来说, 框架很重要, 但其实框架又不重要. 说重要, 是因为确实需要一个框架来建立一套规范, 对文件组织, 类和方法的编写, 数据库操作等进行引导. 说不重要, 是因为对于 PHP 开发, 没有哪一个框架最必须的, 不是框架不给力, 而是 PHP 的世界从来就没有呼唤这样的框架的出现.
在 PHP 框架既重要又不重要的事实面前, 所有的 PHP 框架必须是轻量级的, 如果一个 PHP 框架非常重, 那么它肯定没有前途, 不是流行不起来, 就是流行很短暂便沉寂.
如果你调用 PHP 自带的 json_encode()
函数, 碰到中文时, 中文会被转义掉. 例如:
echo json_encode(array('你好')); // 输出: ["\u4f60\u597d"]
这非常恼人, 像是一堆乱码, JSON 标准从来没有说要把非 ASCII 字符转义, 标准说的是"Any UNICODE character".
如何禁用掉这种转义呢? 答案是, PHP 自带的 json_encode() 不能禁用这个特性(在 5.4.0 版本之前, 之后的版本你可以加 JSON_UNESCAPED_UNICODE 选项), 你只能换一个新的 JSON 库. 为了简单, 我简单写了几十行代码, 实现一个 json_encode().
网上的很多 Linux 操作系统下安装 Nginx + PHP 的教程都很老, 而且各种依赖, 对于初学者来说比较容易混淆, 所以, 我重新写了此篇博客, 用于介绍最简单的 Linux 下安装 Nginx + PHP 的方法.
此文会经常更新, 保持与时俱进. 如果你不是在 ideawu.net 网站看到本文, 请访问 ideawu.net, 阅读最新的版本.
-------------------2016-12-22 更新---------------------- 现在, 我建议你使用 CentOS 6.x, 然后用 yum 来安装各个软件. --------------------------------------------------------
众所周知, LevelDB 只是一个 C/C++ 的编程语言库, 所以, PHP是无法直接使用 LevelDB 的. 如果 PHP 项目想要使用 LevelDB, 一种方法是用 C 语言开发, 把 LevelDB 封装成 PHP 的一个模块, 另一种方法是将 LevelDB 封装成一个网络服务器.
开发 PHP 的 LevelDB 模块的方式适用性不是很高, 因为这种模式限定了必须是单机存储而且必须和 PHP 处在同一台机器. 在代码和数据分离的原则下, 将 LevelDB 封装成一个网络服务是更佳的选择.
SSDB 就是一个 LevelDB 的服务器(LevelDB Server), 以 LevelDB 作为存储引擎, 支持 PHP/Java/Python/C/C++ 等客户端. 下面是一个 PHP 连接 SSDB, 也即 PHP 使用 LevelDB 的例子:
<?php require_once('SSDB.php'); $ssdb = new SimpleSSDB('127.0.0.1', 8888); $resp = $ssdb->set('key', '123'); $resp = $ssdb->get('key'); echo $resp; // output: 123
完整 API 见 SSDB 项目 Wiki.
SSDB 已经在 IT 牛人博客聚合网站得到应用, 非常稳定. 而且, SSDB 支持在线备份功能, 可以通过网络备份数据, 不再担心数据丢失. SSDB 还支持主从同步复制(Replication), 可用于负载均衡.
SSDB - LevelDB Server 下载地址: https://code.google.com/p/zdb/downloads/list