鍍金池/ 問答/ Linux問答
安淺陌 回答

兩種辦法
ctrl+backspace;
如果有 bash 就用 /bin/bash

孤客 回答

1、利用progress-stream獲取上傳進度

如果只是想在服務端獲取上傳進度,可以試下如下代碼。注意,這個模塊跟express、multer并不是強綁定關系,可以獨立使用。

var fs = require('fs');
var express = require('express');
var multer  = require('multer');
var progressStream = require('progress-stream');

var app = express();
var upload = multer({ dest: 'upload/' });

app.post('/upload', function (req, res, next) {
    // 創(chuàng)建progress stream的實例
    var progress = progressStream({length: '0'}); // 注意這里 length 設置為 '0'
    req.pipe(progress);
    progress.headers = req.headers;
    
    // 獲取上傳文件的真實長度(針對 multipart)
    progress.on('length', function nowIKnowMyLength (actualLength) {
        console.log('actualLength: %s', actualLength);
        progress.setLength(actualLength);
    });

    // 獲取上傳進度
    progress.on('progress', function (obj) {        
        console.log('progress: %s', obj.percentage);
    });

    // 實際上傳文件
    upload.single('logo')(progress, res, next);
});

app.post('/upload', function (req, res, next) {
    res.send({ret_code: '0'});
});

app.get('/form', function(req, res, next){
    var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
    res.send(form);
});

app.listen(3000);

2、獲取上傳文件的真實大小

multipart類型,需要監(jiān)聽length來獲取文件真實大小。(官方文檔里是通過conviction事件,其實是有問題的)

    // 獲取上傳文件的真實長度(針對 multipart)
    progress.on('length', function nowIKnowMyLength (actualLength) {
        console.log('actualLength: %s', actualLength);
        progress.setLength(actualLength);
    });

3、關于progress-stream獲取真實文件大小的bug?

針對multipart文件上傳,progress-stream 實例子初始化時,參數(shù)length需要傳遞非數(shù)值類型,不然你獲取到的進度要一直是0,最后就直接跳到100。

至于為什么會這樣,應該是 progress-steram 模塊的bug,看下模塊的源碼。當length是number類型時,代碼直接跳過,因此你length一直被認為是0。

    tr.on('pipe', function(stream) {
        if (typeof length === 'number') return;
        // Support http module
        if (stream.readable && !stream.writable && stream.headers) {
            return onlength(parseInt(stream.headers['content-length'] || 0));
        }

        // Support streams with a length property
        if (typeof stream.length === 'number') {
            return onlength(stream.length);
        }

        // Support request module
        stream.on('response', function(res) {
            if (!res || !res.headers) return;
            if (res.headers['content-encoding'] === 'gzip') return;
            if (res.headers['content-length']) {
                return onlength(parseInt(res.headers['content-length']));
            }
        });
    });

參考鏈接

https://github.com/expressjs/...
https://github.com/freeall/pr...

玄鳥 回答

已找到答案, 方法如下

server {
    listen       80;
    server_name  localhost;
    
    location /a/ { #a目錄的404設置
        error_page 404 /err1.html;
    }
    
    location /b/ { #b目錄的404設置
        error_page 404 /err2.html;
    }
    
}
礙你眼 回答

不需要寫.htaccess,甚至這個文件都不建議啟用。

你需要看的其實就是apache的批量虛擬主機,這個在方案官方文檔就有: https://httpd.apache.org/docs...

荒城 回答

如果只是想做到一個工作線程+n個io線程的話,不管是阻塞還是非阻塞都是可以做到的。

青裙 回答

先試試這個

location ^~ /appdoc {
  root /web/web1/appdoc/
  try_files xxx xxx xxx
}
淚染裳 回答

git只會追蹤你項目目錄下的文件,也就是.git文件夾所在的文件和子文件夾
你應該是想要在把項目的依賴也讓git追蹤,可以看看這個glide
大多依賴管理都是git追蹤依賴信息,然后再去repo里面拉取的,不會直接追蹤依賴的所有文件

空白格 回答

cron 了解一下,至于業(yè)務需求就自己封裝咯

蝶戀花 回答

設置的 IP 必須是本機的,你可以通過下面的命令查到本機的所有 IP

ip address
尐潴豬 回答

數(shù)據(jù)存儲路徑修改需要重新初始化數(shù)據(jù)庫的,你確定你修改成功了?

爆扎 回答

連接慢的主要原因是DNS解析導致
一、測試查找具體原因:
1、使用ssh -v host進行debug

ssh -v 192.168.100.10

然后就會輸出一大堆debug,通過debug信息就可以看到連接到什么地方被耽擱了
比如會顯示如下信息:
[html] view plain copy
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found

2、檢測連接時間

time ssh root@192.168.100.10 exit

二、解決方法(建議一個個設置,因為每個人連接慢的原因都不一樣):

注意:修改之后記得重啟sshd服務

service sshd restart

1、關閉DNS反向解析
在linux中,默認就是開啟了SSH的反向DNS解析,這個會消耗大量時間,因此需要關閉。

vi /etc/ssh/sshd_config

UseDNS=no

在配置文件中,雖然UseDNS yes是被注釋的,但默認開關就是yes

2、關閉SERVER上的GSS認證
在authentication gssapi-with-mic有很大的可能出現(xiàn)問題,因此關閉GSS認證可以提高ssh連接速度。

vi /etc/ssh/sshd_config

GSSAPIAuthentication no

3、修改server上nsswitch.conf文件

vi /etc/nsswitch.conf

找到
hosts: files dns
改為
hosts:files

hosts: files dns這一行含義是對于訪問的主機進行域名解析的順序,是先訪問file,也就是/etc/hosts文件,如果hosts中沒有記錄域名,則訪問dns,進行域名解析,如果dns也無法訪問,就會等待訪問超時后返回,因此等待時間比較長。
注意:如果SERVER需要通過域名訪問其他服務器,則需要保留此行。

4、修改SERVER上resolv.conf文件
4.1、刪除/etc/resolv.conf中所有不使用的IP。
4.2、把nameserver全部刪除,問題也能解決,但是服務器就無法上網(wǎng)了。
4.3、如果SERVER曾經(jīng)配置過雙網(wǎng)卡,則在該文件中會有一行目前不使用的IP地址,刪除該行即可。

5、修改SERVER上hosts文件
在SERVER上/etc/hosts文件中把客戶端的IP和HOSTNAME加入

6、打開SERVER上的IgnoreRhosts參數(shù)
IgnoreRhosts參數(shù)可以忽略以前登錄過主機的記錄,設置為yes后可以極大的提高連接速度

vi /etc/ssh/sshd_config

IgnoreRhosts yes

7、修改客戶端的hosts文件
將目標SERVER的IP和域名加上去,使得本機的DNS服務能解析目標地址。

vi /etc/hosts

192.168.100.11 doiido.com

注:hosts文件格式為'目標SERVER_IP 目標SERVER_NAME'。但是使用這個方法有一個弊端,如果需要給每臺SERVER都添加一個域名解析。

8、修改客戶端配置文件ssh_conf(注意,不是sshd_conf)

vi /etc/ssh/ssh_conf

找到
GSSAPIAuthentication yes
改為
GSSAPIAuthentication no

落殤 回答

1、根據(jù)你的截圖,流量高峰也就400多KB,所以1M帶寬就夠你用了,1M等于1024KB

2、經(jīng)??催@個趨勢圖,根據(jù)具體情況去調(diào)整帶寬

青檸 回答

開發(fā)的擴展模塊不知道,但是PHP和git交互的庫有幾個
Git.php
Gitter

希望你能給整成 PHP的擴展庫

菊外人 回答

如果是系統(tǒng)安裝,可以直接用服務管理腳本進行管理,
如ubuntu下/etc/init.d/tomcat8
使用命令

$ sudo service tomcat8 restart

腳本內(nèi)容如下:

 stop)
log_daemon_msg "Stopping $DESC" "$NAME"

set +e
if [ -f "$CATALINA_PID" ]; then 
start-stop-daemon --stop --pidfile "$CATALINA_PID" \
--user "$TOMCAT8_USER" \
--retry=TERM/20/KILL/5 >/dev/null
if [ $? -eq 1 ]; then
log_progress_msg "$DESC is not running but pid file exists, cleaning up"
elif [ $? -eq 3 ]; then
PID="`cat $CATALINA_PID`"
log_failure_msg "Failed to stop $NAME (pid $PID)"
exit 1
fi
rm -f "$CATALINA_PID"
rm -rf "$JVM_TMP"
else
log_progress_msg "(not running)"
fi
log_end_msg 0
set -e
;;

基本的思路是先用start-stop-daemon發(fā)停止信號給tomcat進程, 如果進程不能順利結束,再用kill殺掉. 這里TERM/20/KILL/5意思是先發(fā)送TERM信號20秒沒有結束接著發(fā)送KILL信號,超時時間為5秒.
如果你自己管理,也可以參考上面腳本來完成.

懷中人 回答
后端不是一樣可以拿到數(shù)據(jù)嗎

是沒問題啊,你跟后端商量好就行。

萌吟 回答
請問怎么改造可以讓后臺POST時候收到收到參

network看你前端本來就沒問題,而問題就變成后端接收不到參數(shù),那么后端可以處理什么content-type呢?(這是接口定義的問題,人家定義不接受form data你發(fā)過去有啥用)

一開始以為你是發(fā)送請求的截圖,原來是后臺給的成功實例。。
當然有問題,application/x-www-form-urlencoded發(fā)送數(shù)據(jù)的格式是a=b&c=d,而你發(fā)的是json字符串,你可以用qs模塊轉一下。

      if (type == 'POST') {
        sendData = JSON.stringify(data);
      }

      requestObj.open(type, url, true);
      requestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      requestObj.send(sendData);

然后以后有關Network的問題,有什么不成功請截個圖發(fā)出來才能看到你到底發(fā)送了什么。