2017.08.05,北京时间从12点到13点,网站又持续性的无法访问,或者访问时提示未加载“Memcached”模块。

当然,这肯定是我拿着锤子在东敲敲,西砸砸的缘故。但是总体而言,还是实现一些好玩的东西。

ssh界面截图.png

一:放弃80端口

因为一些原因,我已经放弃了80端口,如果正常以80端口访问,梦幻辰风只会提示“文字极客 - 网站备案中”。之所以放弃80端口改走443以及8080,88等端口,可能是我一时半会忙不开的缘故。老调重弹,继续讲在lamp环境下如何来多个端口。

通过vim打开“/usr/local/apache/conf/httpd.conf”文件,搜索Listen 80,新增一个你需要的端口,比如Listen 8080。然后保存,继续编辑网站的配置文件,以lamp一键包为例,是“/usr/local/apache/conf/vhost/域名.conf”,然后将80改成你需要的端口,接着在下面的域名后面跟上:端口。

重启httpd,如果没有问题,你就可以用新的端口访问了,至于80,那就会到默认页面。

CDN方面可以设置回源IP与端口,这样,用户访问hao.mhcf.net时,虽然端口不是80,但是也不需要添加80就能访问。(博客小屋采用的是8080端口)

当然,折腾有风险,记得用cp备份文件。

二:开启“ Memcached ”

今天突然想尝试开启“ Memcached ”内存缓存加速网站。LNMP1.2及更高版本统一使用./addons.sh 进行安装和卸载。 使用方法:./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|opcache|redis|imagemagick|ioncube|apcu} 。于是,安装命令是./lnmp源码包解压的位置/addons.sh install memcached 。

安装完毕之后,执行下面这句话开启即可。

memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 4000 -P /tmp/memcached.pid 11211
更详细的有些参数介绍如下:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

开启完成后,就可以修改修改网站的一些小玩意了。最方便的应该是Wordpress,有插件可以直接使用。Emlog则是采用“ 星知苑 ”博客的方法,通过一点点修改内核来完成这个艰巨的任务。办法如下:

1、首先添加memcache类文件mcache.php,放在include/lib文件夹下,服务器地址和端口地址在该文件中,请你自己配置(一般默认即可)

<?php
/**  
 * 此类为单例模式,取得实例方法: $cache = MCache::getInstance();
 * @author Star.Yu <vip@myxzy.com> 
 * @date 2014.5.25
 *
 */
class MCache{
 private static $_instance;
 private static $_connect_type = '';
 private $_memcache;
 
 /**
  * 私有化构造函数,禁止使用关键字new来实例Mcache类
  */
 private function __construct() {
  if (!class_exists('Memcache')) {
   throw new Exception('Class Memcache not exists');
  } 
  $conn = self::$_connect_type;
  $this->_memcache = new Memcache();
  $this->_memcache->$conn('127.0.0.1', '11211');//默认基本就是这个端口啥的
 }
 
 /**
  * 克隆私有化,禁止克隆实例
  */
 private function __clone() {}
 
 /**
  * 类入口,通过此静态方法对类进行实例化
  */
 public static function getInstance($type = 'connect'){
  self::$_connect_type = ($type == 'connect') ? $type : 'pconnect';
  if (!self::$_instance instanceof self) {
   self::$_instance = new self();
  }
  return self::$_instance;
 }
 
 /**
  * 把数据添加到缓存
  * @param string $key 缓存的key
  * @param string|array|int... $value 缓存的数据
  * @param int $flag  使用zlib MEMCACHE_COMPRESSED
  * @param int $expire_time  缓存时间
  */
 public function set($key, $value,$flag = 0 ,$expire_time = 0){
   $this->_memcache->set($key, $value, $flag, $expire_time);   
 }

 /**
  * 替换缓存数据
  * @param string $key 缓存的key
  * @param string|array|int... $value 缓存的数据
  * @param int $flag  使用zlib MEMCACHE_COMPRESSED
  * @param int $expire_time  缓存时间
  */
 public function replace($key, $value,$flag = 0 , $expire_time = 0){
   $this->_memcache->replace($key, $value, $flag, $expire_time);   
 }
 
 /**
  * 从缓存读取数据
  * @param string|array|int... $key
  */
 public function get($key){
  return $this->_memcache->get($key); 
 }
 
 /**
  * 从缓存删除数据
  * @param string|array|int... $key
  */
 public function del($key,$expire_time = 0){
  $this->_memcache->delete($key, $expire_time);  
 }

 public function close(){
	return $this->_memcache->close(); 
 }
}

2、修改include/lib/cache.php,添加实例,第28行修改为

private function __construct() {
		$this->db = Database::getInstance();
		$this->memcache = MCache::getInstance();
	}

3、修改include/lib/cache.php的读写memcache缓存,大概507行下面的cacheWrite和readCache函数修改为

/**
	 * 写入缓存
	 */
	function cacheWrite ($cacheData, $cacheName) {
		$this->memcache->set($cacheName,$cacheData);
	}

	/**
	 * 读取缓存文件
	 */
	function readCache($cacheName) {
		if($this->memcache->get($cacheName)===false){call_user_func(array($this, 'mc_' . $cacheName));}
		$data = $this->memcache->get($cacheName);
		$this->{$cacheName.'_cache'} = unserialize($data);
		return $this->{$cacheName.'_cache'};
	}

任务完成,Emlog站点已经完全可以了。如果不想用memcache缓存了,就用原版的cache.php替换掉修改的cache.php,然后删除Mcache.php即可。方法来自“ 星知苑 ”博客,如果喜欢欢迎支持。

三:魅族手环到了

明明说8月9号到,结果在8月5就到了,这样的事情真的让人无语凝噎,以后再也不相信明明了。

魅族手环戴在手上,最大的感觉是不好戴,戴上去之后,还需要APP魅族手环,然后为它开启权限,至少是能够在后台活着的权限。要不然则是先帝创业未半而中道崩砠的遗憾了。

至于应用,支持心率,记步,睡眠监测,消息提醒。(暂不支持TIM~)

整体而言,希望给妈妈能够带来不错的体验。但是我个人比较后悔的,现在是被迫出去每天八千步。?

    姜辰
2017.08.06

全文完 [ 喜欢本文,打赏作者! ]