MAC app store 更新软件时候进程死掉的解决

By admin |

解决方式出自苹果的官方客服:

1:偏好设置里找到 日期与时间

日期与时间标签里应该选择 Apple 亚洲

然后检查时区设置是否正确.


2.关机,然后在开机的瞬间,迅速按下

Option+Command+R+P(官方说法是清理硬盘缓存)

这个过程会听到三四声苹果的开机声音


完成之后,重新进入 app store 更新软件,可以正常工作了.


Drupal 7 混用缓存配置

By admin |
if (extension_loaded('memcached')) {
  $conf['cache_backends'][] = 'sites/all/modules/contrib/memcache_storage/memcache_storage.inc';
  #$conf['cache_default_class'] = 'MemcacheStorage';
  #$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
  #$conf['cache_class_cache_update'] = 'DrupalDatabaseCache';
  $conf['memcache_storage_key_prefix'] = 'de';
  $conf['memcache_storage_debug'] = FALSE;
  $conf['memcache_storage_wildcard_invalidate'] = 60 * 60 * 24 * 5; // 5 days.
  $conf['memcache_servers'] = array(
    '1.1.1.1:11212' => 'default',
  );

mac下docker的docker.qcow2文件太大清理

By admin |
cd ~/Library/Containers/com.docker.docker/Data/database
git reset --hard
echo true > disk/trim
##如果docker版本是17.03.1-ce-mac5 (16048),执行
##echo true > com.docker.driver.amd64-linux/disk/trim
git commit -a -m 'enable fstrim'
# 重启docker....
docker run --rm -it --privileged --pid=host walkerlee/nsenter -t 1 -m -u -i -n fstrim /var


上述命令执行后,空间释放出25G左右。


参考链接:

drupal cache 漫谈

By admin |

最近对drupal cache使用比较多。使用过memcache/memcache_storage/redis模块用来做drupal 的cache。

对于多站点来说,要注意设置cache_prefix变量,否则容易引起cache的混乱。一般配置在settings.php

$conf['cache_prefix'] = 'your-cache-prefix';

该方法对memcache/memcache_storage/redis同样适用。

但是redis有特殊之处。就是如果不设置这个值,默认提供一个cache_prefix。这个prefix是根据数据库的链接的md5计算出来的。就是说如果适用redis作为cache层,可以不关注这个设定。但是为了使用的友好性,建议设定这个值。

redis如何设定cache_prefix代码参见如下链接。

通过docker-compose修改时区

By admin |

docker 容器默认的时区如果需要修改,可以通过docker-compose.yml.


elastalert:
   image: ivankrizsan/elastalert:latest
   volumes:
       - ./ElastalertShared/logs:/opt/logs
       - ./ElastalertShared/rules:/opt/rules
   links:
       - elk_stack:elasticsearch_host
   environment:
       - SET_CONTAINER_TIMEZONE=true
       - CONTAINER_TIMEZONE=Europe/Stockholm
   stdin_open: false
   tty: false

centos 下修改docker网络配置

By admin |

事情起因:

在为客户使用docker运行php-fpm的时候,发现有的可以正常连接服务器,有的不可以。经过诊断发现客户端的ip网段和docker创建的默认docker0网卡网段冲突。

docker0默认的网络一般都是172.17.0.1/24或192.168.0.1/24。如果客户端的ip是172.17.111.1,则这时候访问基于docker部署的应用的时候,会遇到网络问题。


解决的方案,有两种。

1:使用host模式运行docker,但是需要删除默认的docker0虚拟网卡。在下次docker daemon重新启动的时候,又会重新创建这个docker0的虚拟网卡。

2:另一种解决方式,就是修改默认的docker0网络配置,使用另外的网段给docker使用。


如下步骤,是基于方案二的解决步骤,亲测可行。

如何将MySQL datetime类型修改为timestamp

By admin |
ALTER TABLE erp_diff_order ADD COLUMN created_date_tmp int(11) default 0;
UPDATE erp_diff_order SET created_date_tmp=UNIX_TIMESTAMP(created_date);
ALTER TABLE erp_diff_order DROP COLUMN created_date;
ALTER TABLE erp_diff_order ADD COLUMN created_date int(11) default 0;
UPDATE erp_diff_order SET created_date=created_date_tmp;
ALTER TABLE erp_diff_order DROP COLUMN created_date_tmp;


Drupal高可用坑之表单过期

By admin |

在Drupal单站点,即一个web server(nginx或者apache),一个数据库,一个缓存服务器的架构下,绝大多数情况下都很完美。

但是对一些Drupal做了高可用,负载均衡等配置;会涉及到两台Web Server服务器,两台数据库服务器(Mysql的Master/Slave)等。这时候有些问题,就会暴露出某些问题。

这里列出遇到表单过期的问题问题,并分享解决方法。


因为服务器做了高可用,所以有两台Web Server服务器,上面安装了nginx+php-fpm。两台数据库服务器,做了主从配置。

https://www.drupal.org/node/2241311

php匿名函数+array_map获取entity list

By admin |

Drupal下面获取entity machine name + entity label的key => value列表,一般会用foreach来获取。代码格式如下

$entity_info = entity_get_info();
$options = [];
foreach ($entity_info as $entity_type => $info) {
  $options[$entity_type] = $info['label'];
}

这样写固然无可厚非。但是这里介绍一种稍有逼格的写法,供读者开拓思路。

这里利用了array_map + 匿名函数的方式来执行。

$entity_info = entity_get_info();
$entity_options = array_map(function ($item) {
  return $item['label'];
}, $entity_info);