编程一些记录

原创
2016/10/27 17:05
阅读数 283
  1. redis windows 后台运行

redis-server.exe --service-install redis.windows.conf --loglevel verbose 如果没有redis.windows.conf下载新版本 启动 redis-server.exe --service-start

  1. guzzle curl IPV4解析(curl 中的option 的设置)

         $response = $client->post($proInfo['ret_url'], array(
             'body' => json_encode($data),
             'headers' => array(
                 'Content-Type' => 'application/json',
             ),
             'curl'=>array(CURLOPT_IPRESOLVE=>CURL_IPRESOLVE_V4),
         ));
    

3.mongodb 主从正常情况从数据库不准读写

> show dbs
2016-11-29T23:23:54.578+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:761:19
shellHelper@src/mongo/shell/utils.js:651:15‘
> rs.slaveOk(); //这样解决

4.mysql 优化 inner join 和 left join 都需要优化右表。而 right join 需要优化左表。

5.rabbitmq 死信队列做延迟队列

$channel->queue_declare($queue, false, true, false, false, false, array(
        'x-message-ttl'=>array('I', 20000), //过期
        'x-max-priority'=>array('I', 20000),//可以做优先级
        'x-dead-letter-exchange'=>array('S','dead-exchange'),//指定死信交换机
        'x-dead-letter-routing-key'=>array('S','dead-routing-key') //指定路由
    )
);

$channel->exchange_declare($exchange, 'direct', false, true, false, false, false);

$channel->queue_bind($queue, $exchange);

for($i = 0; $i<10; $i++) {
    $message = new AMQPMessage($i.'---'.time(),
        array(
            'content_type' => 'text/plain',
            'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT,
            //'priority' => $i == 1 ? 10 : 1,
            'expiration' => $i == 5 ? 360000 : 10000,
           // 'timestamp' => $i == 5 ? time() + 360000 : time() + 1000,
        )
    );
    $channel->basic_publish($message, $exchange);
}

6.predis set 方法的第三个参数是决定过期时间秒(ex)还是毫秒(px)

$client->set("test", "value", 'px', 5000);

7.zip 压缩不要文件夹用 -j

 zip -0 -r -j /var/www/html/downRecord/files/1/20161201.zip  /var/bjsass/1/20161201/  (-0是不压缩只打包)

8.snc_redis 在程序中切换前缀

$this->get('snc_redis.default')->select('3');
$this->get('snc_redis.default')->getOptions()->profile->getProcessor()->setPrefix('');

9 php 连接mongodb报错 No suitable servers found (serverSelectionTryOnce set): [Server closed connection. calling ismaster on '192.168.166.45:3717'] [Server closed connection. calling ismaster on '192.168.166.46:3717']

由于mongodb服务端升级导致;客户端php的mongodb扩展也需要升级(查看扩展版本 php --ri mongodb) ,安装完记得重启php-fpm

10 大文件搜索 要去日志文件搜一个东西;发现以前配置的logrotate没有起效;导致日志文件特别大;通过cat grep根本搜不出来关键字; 需要通过split切割成小文件

split -b 100m consumer.log (按照字节分隔)
split -l 10000000 consumer.log(按照行数分隔)

然后在根据大概日期找到对应的文件 grep关键字

11 logrotate没有执行

有一次是碰到crond服务没有启动;/etc/init.d/crond status可以看看 还有可能是日志目录权限文件 777 还有问题;改成755没有问题 延申阅读

12 docker run 不了

docker: Error response from daemon: driver failed programming external connectivity on endpoint myapp (cf4a474ac152557ba25f6537dea87cf814188a420ca79f6f52521adf446e4c8e): Error starting userland proxy: /forwards/expose/port returned unexpected status: 500 网上查都是重启docker ,windows重启了也没有用;run得时候-p 把端口更改了就没有问题了;具体原因待查询,感觉docker有缓存什么得

13 删除mysql大表里面大量数据

有一个日志表;需要把前几个月得数据删除;如果按照时间来删除;就算时间字段有索引;删除几乎是不可能得; 可以找出最大id, 和limit 来重复执行;delete FROM `xx` WHERE id<184186639 limit 1000000 这样麻烦点;最起码还能删除

14 测试一段程序耗时毫秒数

$startTime = microtime(true);
/**
code
*/
$t = microtime(true) - $startTime;
$t = number_format($t*1000, 4);
  1. navicat 注册破解 https://github.com/DoubleLabyrinth/navicat-keygen/blob/windows-archived/README.zh-CN.md

  2. phpstrom破解 https://zhile.io/2018/08/17/jetbrains-license-server-crack.html

  3. 虚拟机网络配置 https://www.cnblogs.com/linjiaxin/p/6476480.html vmnet8禁用不影响虚拟机上网,但是会影响主机和虚拟机之间的联通, nat上网,是用的网关是vmnet nat服务,这个服务和2个虚拟网卡是没有联系的。 之所以主机不能ping通2个虚拟机的原因,就是vmnet8已经禁用了

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部