Drupal Views 增加默认过滤条件

  1. /**
  2. * Implements hook_form_views_exposed_form_alter().
  3. * Set the default exposed filter value.
  4. * @param $form
  5. * @param $form_state
  6. */
  7. function mymodule_form_views_exposed_form_alter(&$form, &$form_state) {
  8.   if (!isset($form_state['input']['myfield']['value'])) {
  9.     $form_state['input']['myfield']['value'] = 'test';
  10.   }
  11. }
发表在 Drupal | 留下评论

Drupal 生成机器名

在Drupal很多地方都有一个生成机器名的地方,比如创建内容类型名. Views名. 于是挖出这段代码觉得非常简单(非JS)

https://api.drupal.org/api/drupal/includes%21form.inc/function/form_process_machine_name/7.x

  1. $element['#machine_name'] += array(
  2.     'source' => array('name'),
  3.     'target' => '#' . $element['#id'],
  4.     'label' => t('Machine name'),
  5.     'replace_pattern' => '[^a-z0-9_]+',
  6.     'replace' => '_',
  7.     'standalone' => FALSE,
  8.     'field_prefix' => $element['#field_prefix'],
  9.     'field_suffix' => $element['#field_suffix'],
  10.   );

基本就是这样

  1. preg_replace('#[^a-z0-9_]+#', '_', $str);  // 把非小写字母和数字的替换成下划线
发表在 Drupal | 留下评论

Mysql

Profile

profile 用于查看在服务器上执行所有语句的耗时和其他一些查询执行状态变更的数据.

  1. mysql> SET profiling = 1;  #设置变量
  2. mysql> SELECT * FROM mytable;
  3. mysql> SHOW profiles;   # 查看结果
  4. mysql> SHOW profile FOR query 1;  #查看指定ID的sql执行详细信息
  5. mysql> SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=26; #查看指定ID的sql执行详细信息

每秒刷新当前连接数和sql数

  1. $ mysqladmin ext -i1 -uroot -proot | awk '
  2. /Queries/{q=$4-qp;qp=$4}
  3. /Threads_connected/{tc=$4}
  4. /Threads_running/{printf "%5d %5d %5d\n", q, tc, $4}'

Mysql 操作技巧

  1. $ mysql -e "sql"  命令行执行sql
  2. mysql> SHOW processlist; 查看当前的连接客户端

Mac开始漫查询

  1. $sudo vim /private/etc/my.cnf
  2.  
  3. [mysqld]
  4. long_query_time = 0  #查询时间大于设置的,0表示所有
  5. slow_query_log = 1
  6. slow_query_log_file = /var/log/mysql/slow-query.log
  7.  
  8. $mysql sudo mkdir /var/log/mysql                                                                                                                                                                                                                                                                                                                    $mysql sudo touch /var/log/mysql/slow-query.log
  9. $mysql sudo chown -R _mysql /var/log/mysql/
  10. $awk '/^# Time:/{print $3, $4, c;c=0}/^# User/{c++}' /var/log/mysql/slow-query.log #查看每秒查询数
  11. $tail -f /var/log/mysql/slow-query.log #时时打印sql

Mysql 工具包 percona-toolkit
http://macappstore.org/percona-toolkit/
pt-mysql-summary 和 pt-summary 打印状态和配置信息. 以及操作系统硬件信息
pt-sift 导航样本数据

发表在 mysql | 留下评论

服务器性能测试

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/

发表在 其它 | 留下评论