macOS Sierra系统下PHP5.6安装memcached扩展

一、下载扩展包及依赖

libmemcached下载地址
https://launchpad.net/libmemcached/+download

php-memcached下载地址 (PHP5.6选择2.2.0版本,PHP7选择3.X版本)
http://pecl.php.net/package/memcached

二、安装libmemcached依赖

mkdir -p /usr/local/libmemcached
tar zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached --with-memcached
make && make install

继续阅读

WordPress只显示当前主题,不展示已安装主题列表

最近一个老站(WP)迁移到新的主机上之后,安装的主题仅展示在用的一个,重新安装WordPress新版也不管用,看了下相关代码发现用到了PHP的scandir函数,而新环境中PHP配置把此函数禁用掉了,需将php.ini 中disable_functions里面scandir去掉即可。


vi /usr/local/php/etc/php.ini

找到disable_functions这一行,然后把scandir 去掉;

然后重启 php 服务:service php-fpm restart (或:/etc/init.d/php-fpm restart )即可。

Rsync结合Inotify 实现Centos文件实时同步更新

一. 背景

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

恩,这是抄的别人的一句话,参见http://www.cnblogs.com/davidwang456/p/3684945.html

inotify 介绍

inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。
继续阅读

Mac下iterm2一些配置

1.需要的时候把 iterm2 呼出来,不需要的时候自动隐藏.

我个人非常喜欢这个功能,需要的时候在屏幕顶部展示,不需要的时候隐藏不占地方

iTerm2 – Preferences – Keys

左侧 Hotkey 选项 勾选 Show/hide iTerm2 with a system-wide hotkey

并且可以在 Hotkey 文本框处 设置一个你喜欢的全局快捷键 ,我自己使用的是 option + command

这样不管你在干什么的时候,只要敲打你上面设置的热键,iterm2 直接呼出, 搜噶~~~

2.Preferences – Profiles – Terminal – Terminal Emulation – Report Terminal Type

将其中的 xterm 改成 xterm-256color,比如在 Vim 显示一些配色方案会好很多

3.复用上个会话的目录

Preferences – Profiles – Working Directory – Reuse previous session’s directory

分享一些关于iterm2 的快键键:

⌘ + Click:可以打开文件,文件夹和链接

⌘ + n:新建窗口

⌘ + t:新建标签页

⌘ + w:关闭当前页

⌘ + 数字 & ⌘ + 方向键:切换标签页

⌥⌘ + 数字:切换窗口

⌘ + enter:切换全屏

⌘ + d:左右分屏

⇧⌘ + d:上下分屏

⌘ + ;:自动补全历史记录

⇧⌘ + h:自动补全剪贴板历史

⌥⌘ + e:查找所有来定位某个标签页

⌘ + r & ⌃ + l:清屏

⌘ + /:显示光标位置

⌥⌘ + b:历史回放

⌘ + f:查找,然后用 tab 和 ⇧ + tab 可以向右和向左补全,补全之后的内容会被自动复制, 还可以用 ⌥ + enter 将查找结果输入终端

选中即复制,鼠标中键粘贴

yii批量插入的方法

在开发中遇到过这样问题,foreach循环插入数据时,表中只插入了循环的最后一条数据,而其它数据没有真实添加,追踪发现,内存地址中循环时新一条数据会覆盖前一条数据,解决办法是另起一个对象;

如下:

第一种方法

$model = new User();
foreach($data as $attributes)
{
     $_model = clone $model; //克隆对象
     $_model->setAttributes($attributes);
     $_model->save();
}

第二种方法

$model = new User();
foreach($data as $attributes)
{
      $model->isNewRecord = true;
      $model->setAttributes($attributes);
      $model->save() && $model->id=0;
}

Yii2.0 设置伪静态 / yii2.0 rewrite设置

1. 开启 apache 的 mod_rewrite 模块
打开apache/conf/httpd.conf,找到
LoadModule rewrite_module modules/mod_rewrite.so,然后去掉前的“#”符号;

2. 修改 apache httpd.conf中的 AllowOverride

把 AllowOverride None 修改为 AllowOverride All;

3. 两种方式任选其一

①在与index.php文件同级目录(web目录)下添加文件“.htaccess”

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

②在httpd-vhost.conf中设置

<VirtualHost *:80>
ServerName www.yii.loc
DocumentRoot “D:/xampp/htdocs/study/basic/web”
<Directory “D:/xampp/htdocs/study/basic/web”>
# 开启 mod_rewrite 用于美化 URL 功能的支持(译注:对应 pretty URL 选项)
RewriteEngine on
# 如果请求的是真实存在的文件或目录,直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 如果请求的不是真实文件或目录,分发请求至 index.php
RewriteRule . index.php
# …其它设置…
</Directory>
</VirtualHost>

4. 配置应用的urlManager

需要在config/web.php中的components数组下增加:

‘urlManager’ => [
‘enablePrettyUrl’ => true,
‘showScriptName’=>false,
‘rules’ => [
// your rules go here
],
// …
],
具体可用属性,可查阅API文档。

yii2.0与之前版本配置略有不同,根据文档显示:

http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html

如何识别微信内置浏览器访问(识别扫一扫来源)

最近给公司做App统一扫描下载入口时,遇到一个问题,安卓版微信会屏蔽apk的下载,于是在扫码时,需判断是否是微信扫码,下面提供PHP和Js两种判断方法:

 

JavaScript版本判断

function is_weixn(){
  var ua = navigator.userAgent.toLowerCase();
  if(ua.match(/MicroMessenger/i)=="micromessenger") {
    return true;
  } else {
    return false;
  }
}

 

PHP判断

function isWeixin(){
  $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  $is_weixin = strpos($agent, 'micromessenger') ? true : false ;
  return $is_weixin;
}

 

PHP的匿名函数及闭包

匿名函数在编程语言中出现的比较早,最早出现在Lisp语言中,随后很多的编程语言都开始有这个功能了, 目前使用比较广泛的Javascript以及C#,PHP直到5.3才开始真正支持匿名函数, C++的新标准C++0x也开始支持了。

匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数, 最常见应用是作为回调函数。

继续阅读