服务器性能测试

sysbench
1. 测试CPU: $ sysbench –test=cpu –cpu-max-prime=20000 run
2. 测试文件IO
一. 创建测试文件: $ sysbench –test=fileio –file-total-size=150G prepare
二. 测试创建的测试文件: $sysbench –test=fileio –file-total-size=120G –file-test-mode=rndrw –init-rng=on –max-time=300 –max-requests=0 run
mode分为, seqwr(顺序写入), seqrewr(顺序重写), seqrd(顺序读取), rndrd(随机读取), rndwr(随机写入), rdnrw(混合随机读书/写)
三. 清除测试文件: $ sysbench –test=fileio –file-total-size=150G cleanup

http_load

-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-r :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间

http_load 类似于ab命令,但是比AB灵活得多,可以根据一个url列表随机抽取来进行测试.
http_load -parallel 1 -seconds 10 urls.txt

Workbench
https://dev.mysql.com/doc/workbench/en/wb-installing-mac.html

发表在 服务器 | 留下评论

Mysql 开启漫查询,记录sql

在mysql配置文件my.cnf中增加

log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
long_query_time=2 (记录超过的时间,默认为10s)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)

发表在 mysql | 留下评论

Mac os 安装Web devel环境

https://mallinson.ca/osx-web-development/

发表在 ubuntu | 留下评论

Drupal Entity_metadata_wrapper 各种数据类型

修改Profile2

  1. $account = user_load(46);
  2. $profile = profile2_load_by_user($account, 'user_main');
  3. $wrapper = entity_metadata_wrapper('profile2', $profile);
  4. // 修改姓名字段
  5. $wrapper->field_user_realname->set('周周秀坤');
  6. $wrapper->save();

创建用户并绑定Profile2

  1.  
  2. $newuser = user_load(2);
  3. $profile = profile2_create(array(
  4.     'user' => $newuser,
  5.     'type' => 'user_main'));
  6.  
  7. $wrapper = entity_metadata_wrapper('profile2', $profile);
  8. $wrapper->field_user_realname->set('hello world');
  9. $wrapper->save();

Poi Polygon

  1. $polygon = 'POLYGON (1 2, 2 3,3 4)';
  2. $geometry = geoPHP::load($polygon);
  3. $wrapper->field_poi->set(geometry);
发表在 Drupal | 留下评论

修改Drupal密码加密方式

因为Drupal系统上面的用户要同步到客户端,而客户端要实现断网登陆。这就说明客户端要实现Drupal的加密方式,相对而言这样是很麻烦. 所以我决定把Drupal的用户密码加密方式设置成简单的md5或者更简单的我知道的加密方式

Drupal的所有密码的加密基本都实现在 includes/password.inc

现在要做的是把这个文件的位置改一下.

variable_set('password_inc', drupal_get_path('module', 'MYMODULE') . '/password.inc')

复制password.inc到你的模块目录下面的, 现在可以肆无忌惮的修改用户的加密方式和验证方式了

// 修改加密方式.
function user_hash_password($password, $count_log2 = 0) {
  return sha1($password . 'MYPRIVATEKEY');
}

修改验证方式.

function user_check_password($password, $account) {
  // 更改Drupal默认的密码验证方式.
  return $account->pass == sha1($password . 'MYPRIVATEKEY');
}
发表在 Drupal | 留下评论

Symfony 如何获取container

我们在控制器中,直接继承了Controller 类。此时我们当使用 $this的时候,此时的 $this已经包含了很多的类和方法
如果我们在一个Utils类中。此类没有继承任何的。那如何获取这个 ($this)container呢

方法1. 调用的时候传参数:
arguments: [@service_container]

方法2. 使用global
global $kernel;
$this->container = $kernel->getContainer();

发表在 symfony | 留下评论

Composer

安装:
https://getcomposer.org/doc/00-intro.md

Composer 搜索地址:
https://packagist.org/

发表在 其它 | 留下评论

Mac 安装pear和pecl

http://jason.pureconcepts.net/2012/10/install-pear-pecl-mac-os-x/

发表在 Mac, PHP | 留下评论

PHP 对比 Erlang

数组过滤

PHP 比较数组过滤

  1. $arr = array(
  2.   array(1, 9),
  3.   array(1, 8),
  4.   array(6, 10),
  5.   array(15, 44),
  6.   array(4, 6),
  7.   array(30, 5),
  8. );
  9.  
  10. $newarr = array();
  11. foreach($arr as $key => $value) {
  12.   if($value[0] > 10 && $value[1] > 10) {
  13.     $newarr[] = $value;
  14.   }
  15. }
  16.  
  17. var_dump($newarr);

Erlang列表解析做相同的事

  1. L = [{1,9},{1,8},{6,10},{15,44},{4,6},{30, 5}].
  2. [{X,Y} || {X,Y} <- L, X >10, Y>10].

毕达哥拉斯三元组

  1. $M = 11;
  2. $R = array();
  3.  
  4. for($X = 1; $X < $M; $X++) {
  5.   for($Y = 1; $Y < $M; $Y++) {
  6.     for($Z = 1; $Z < $M; $Z++) {
  7.       if($X > $Y && $Y > $Z && $Z*$Z + $Y * $Y == $X * $X) {
  8.         $R[] = array($X, $Y, $Z);
  9.       }
  10.     }
  11.   }
  12. }
  13. print '<pre>';
  14. print_r($R);

Erlang

pythag(N) -> [{A,B,C} || 
	A <- lists:seq(1, N),
        B <- lists:seq(1, N),
	C <- lists:seq(1, N),
	A < B,
	B < C,
	A*A + B*B =:= C*C
].
发表在 PHP | 留下评论

Drupal 上传文件以文件的md5命名

有这么一种场景: 如果你的Drupal作为一个server,客户端每次都需要将服务器上的资源下载到客户端,你如何保证下载的内容不重复?比如 a.jpg和b.jpg其它是一张图片复制,只是换了一个名字。如何保证客户端不浪费流量,只需要下载一次?

我这里的解决方案是当上传文件的时候给文件重命名,名字中包含这个文件的md5, 文件md5能确保这个文件的唯一性. 客户端在下载资源的时候,只需要判断文件名前面的md5是否存在既可.

  1. /**
  2.  * 文件上传名增加md5效验.
  3.  *
  4.  * Implements hook_file_insert().
  5.  */
  6. function HOOK_file_insert($file) {
  7.   if ($wrapper = file_stream_wrapper_get_instance_by_uri($file->uri)) {
  8.     $realpath = $wrapper->realpath();
  9.     // 获取文件名.
  10.     $basename = drupal_basename($file->uri);
  11.     $dirname = drupal_dirname($file->uri);
  12.  
  13.     // 当已是md5加密的文件名去掉加密头.
  14.     if(preg_match('#([a-z0-9]{32})_(.*)#', $basename, $matches)) {
  15.       $basename = $matches[2];
  16.     }
  17.     $filename = md5_file($realpath) . '_' . $basename;
  18.     $newpath = file_create_filename($filename, $dirname);
  19.     file_move($file, $newpath, FILE_EXISTS_RENAME);
  20.   }
  21. }
发表在 Drupal | 留下评论