小雜碎

  1. redis windows 後臺運行

redis-server.exe --service-install redis.windows.conf --loglevel verbose 若是沒有redis.windows.conf下載新版本 啓動 redis-server.exe --service-startphp

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

    $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 主從正常狀況從數據庫不許讀寫mysql

> 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 須要優化左表。redis

5.rabbitmq 死信隊列作延遲隊列sql

$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)mongodb

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

7.zip 壓縮不要文件夾用 -jdocker

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

8.snc_redis 在程序中切換前綴shell

$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-fpmjson

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);
相關文章
相關標籤/搜索