兩種辦法
ctrl+backspace;
如果有 bash 就用 /bin/bash
progress-stream獲取上傳進(jìn)度如果只是想在服務(wù)端獲取上傳進(jìn)度,可以試下如下代碼。注意,這個(gè)模塊跟express、multer并不是強(qiáng)綁定關(guān)系,可以獨(dú)立使用。
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的實(shí)例
var progress = progressStream({length: '0'}); // 注意這里 length 設(shè)置為 '0'
req.pipe(progress);
progress.headers = req.headers;
// 獲取上傳文件的真實(shí)長(zhǎng)度(針對(duì) multipart)
progress.on('length', function nowIKnowMyLength (actualLength) {
console.log('actualLength: %s', actualLength);
progress.setLength(actualLength);
});
// 獲取上傳進(jìn)度
progress.on('progress', function (obj) {
console.log('progress: %s', obj.percentage);
});
// 實(shí)際上傳文件
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);
multipart類(lèi)型,需要監(jiān)聽(tīng)length來(lái)獲取文件真實(shí)大小。(官方文檔里是通過(guò)conviction事件,其實(shí)是有問(wèn)題的)
// 獲取上傳文件的真實(shí)長(zhǎng)度(針對(duì) multipart)
progress.on('length', function nowIKnowMyLength (actualLength) {
console.log('actualLength: %s', actualLength);
progress.setLength(actualLength);
});
progress-stream獲取真實(shí)文件大小的bug?針對(duì)multipart文件上傳,progress-stream 實(shí)例子初始化時(shí),參數(shù)length需要傳遞非數(shù)值類(lèi)型,不然你獲取到的進(jìn)度要一直是0,最后就直接跳到100。
至于為什么會(huì)這樣,應(yīng)該是 progress-steram 模塊的bug,看下模塊的源碼。當(dāng)length是number類(lèi)型時(shí),代碼直接跳過(guò),因此你length一直被認(rèn)為是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設(shè)置
error_page 404 /err1.html;
}
location /b/ { #b目錄的404設(shè)置
error_page 404 /err2.html;
}
}不需要寫(xiě).htaccess,甚至這個(gè)文件都不建議啟用。
你需要看的其實(shí)就是apache的批量虛擬主機(jī),這個(gè)在方案官方文檔就有: https://httpd.apache.org/docs...
如果只是想做到一個(gè)工作線(xiàn)程+n個(gè)io線(xiàn)程的話(huà),不管是阻塞還是非阻塞都是可以做到的。
先試試這個(gè)
location ^~ /appdoc {
root /web/web1/appdoc/
try_files xxx xxx xxx
}檢查下/etc/hosts文件有沒(méi)有配置
127.0.0.1 localhost
console.log('name' in daili,'time' in daili);設(shè)置的 IP 必須是本機(jī)的,你可以通過(guò)下面的命令查到本機(jī)的所有 IP
ip address數(shù)據(jù)存儲(chǔ)路徑修改需要重新初始化數(shù)據(jù)庫(kù)的,你確定你修改成功了?
連接慢的主要原因是DNS解析導(dǎo)致
一、測(cè)試查找具體原因:
1、使用ssh -v host進(jìn)行debug
然后就會(huì)輸出一大堆debug,通過(guò)debug信息就可以看到連接到什么地方被耽擱了
比如會(huì)顯示如下信息:
[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、檢測(cè)連接時(shí)間
二、解決方法(建議一個(gè)個(gè)設(shè)置,因?yàn)槊總€(gè)人連接慢的原因都不一樣):
注意:修改之后記得重啟sshd服務(wù)
1、關(guān)閉DNS反向解析
在linux中,默認(rèn)就是開(kāi)啟了SSH的反向DNS解析,這個(gè)會(huì)消耗大量時(shí)間,因此需要關(guān)閉。
UseDNS=no
在配置文件中,雖然UseDNS yes是被注釋的,但默認(rèn)開(kāi)關(guān)就是yes
2、關(guān)閉SERVER上的GSS認(rèn)證
在authentication gssapi-with-mic有很大的可能出現(xiàn)問(wèn)題,因此關(guān)閉GSS認(rèn)證可以提高ssh連接速度。
GSSAPIAuthentication no
3、修改server上nsswitch.conf文件
找到
hosts: files dns
改為
hosts:files
hosts: files dns這一行含義是對(duì)于訪(fǎng)問(wèn)的主機(jī)進(jìn)行域名解析的順序,是先訪(fǎng)問(wèn)file,也就是/etc/hosts文件,如果hosts中沒(méi)有記錄域名,則訪(fǎng)問(wèn)dns,進(jìn)行域名解析,如果dns也無(wú)法訪(fǎng)問(wèn),就會(huì)等待訪(fǎng)問(wèn)超時(shí)后返回,因此等待時(shí)間比較長(zhǎng)。
注意:如果SERVER需要通過(guò)域名訪(fǎng)問(wèn)其他服務(wù)器,則需要保留此行。
4、修改SERVER上resolv.conf文件
4.1、刪除/etc/resolv.conf中所有不使用的IP。
4.2、把nameserver全部刪除,問(wèn)題也能解決,但是服務(wù)器就無(wú)法上網(wǎng)了。
4.3、如果SERVER曾經(jīng)配置過(guò)雙網(wǎng)卡,則在該文件中會(huì)有一行目前不使用的IP地址,刪除該行即可。
5、修改SERVER上hosts文件
在SERVER上/etc/hosts文件中把客戶(hù)端的IP和HOSTNAME加入
6、打開(kāi)SERVER上的IgnoreRhosts參數(shù)
IgnoreRhosts參數(shù)可以忽略以前登錄過(guò)主機(jī)的記錄,設(shè)置為yes后可以極大的提高連接速度
IgnoreRhosts yes
7、修改客戶(hù)端的hosts文件
將目標(biāo)SERVER的IP和域名加上去,使得本機(jī)的DNS服務(wù)能解析目標(biāo)地址。
192.168.100.11 doiido.com
注:hosts文件格式為'目標(biāo)SERVER_IP 目標(biāo)SERVER_NAME'。但是使用這個(gè)方法有一個(gè)弊端,如果需要給每臺(tái)SERVER都添加一個(gè)域名解析。
8、修改客戶(hù)端配置文件ssh_conf(注意,不是sshd_conf)
找到
GSSAPIAuthentication yes
改為
GSSAPIAuthentication no
https://zhidao.baidu.com/ques... 我的問(wèn)題答案已經(jīng)在這里找到解決方法了
1、根據(jù)你的截圖,流量高峰也就400多KB,所以1M帶寬就夠你用了,1M等于1024KB
2、經(jīng)??催@個(gè)趨勢(shì)圖,根據(jù)具體情況去調(diào)整帶寬
加個(gè) -f 試試
如果是系統(tǒng)安裝,可以直接用服務(wù)管理腳本進(jìn)行管理,
如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ā)停止信號(hào)給tomcat進(jìn)程, 如果進(jìn)程不能順利結(jié)束,再用kill殺掉. 這里TERM/20/KILL/5意思是先發(fā)送TERM信號(hào)20秒沒(méi)有結(jié)束接著發(fā)送KILL信號(hào),超時(shí)時(shí)間為5秒.
如果你自己管理,也可以參考上面腳本來(lái)完成.
后端不是一樣可以拿到數(shù)據(jù)嗎
是沒(méi)問(wèn)題啊,你跟后端商量好就行。
請(qǐng)問(wèn)怎么改造可以讓后臺(tái)POST時(shí)候收到收到參
從network看你前端本來(lái)就沒(méi)問(wèn)題,而問(wèn)題就變成后端接收不到參數(shù),那么后端可以處理什么content-type呢?(這是接口定義的問(wèn)題,人家定義不接受form data你發(fā)過(guò)去有啥用)
一開(kāi)始以為你是發(fā)送請(qǐng)求的截圖,原來(lái)是后臺(tái)給的成功實(shí)例。。
當(dāng)然有問(wèn)題,application/x-www-form-urlencoded發(fā)送數(shù)據(jù)的格式是a=b&c=d,而你發(fā)的是json字符串,你可以用qs模塊轉(zhuǎn)一下。
if (type == 'POST') {
sendData = JSON.stringify(data);
}
requestObj.open(type, url, true);
requestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
requestObj.send(sendData);
然后以后有關(guān)Network的問(wèn)題,有什么不成功請(qǐng)截個(gè)圖發(fā)出來(lái)才能看到你到底發(fā)送了什么。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。