国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

談?wù)勆缃卉浖谐S玫男〖记桑好氚l(fā)功能

LeexMuller / 556人閱讀

摘要:想象一下,我們平常發(fā)朋友圈的時(shí)候,張圖片配上文字,嗖的一下就發(fā)出去了,不帶任何拖泥帶水的那種,體驗(yàn)感覺好爽。對(duì)數(shù)據(jù)庫表結(jié)構(gòu)進(jìn)行了一些特殊改造朋友圈內(nèi)容表有一個(gè)特殊的字段,值有兩種情況,值可以為或者,值為是朋友圈未發(fā)布。值為是朋友圈已發(fā)布。

想象一下,我們平常發(fā)朋友圈的時(shí)候,N張圖片配上文字,嗖的一下就發(fā)出去了,不帶任何拖泥帶水的那種,體驗(yàn)感覺好爽~。

但是我們停下來用技術(shù)手段思考一下,這可能嗎?有些2G網(wǎng)絡(luò)最多也就幾十K網(wǎng)速,我們的圖片隨便一張都幾M,即使壓縮過也有幾百K,怎么可能瞬間發(fā)出消息呢?

現(xiàn)在想想,是不是有些詭異呢~

其實(shí)吧,眾多社交軟件(微博,微信)都是用了一種秒發(fā)機(jī)制。他并不是真的先去發(fā)送然后發(fā)送完畢再告訴你發(fā)送成功,而是直接告訴你發(fā)送成功,然后后臺(tái)再偷偷去上傳你發(fā)的東西,所以在網(wǎng)速不好的時(shí)候我們會(huì)經(jīng)常發(fā)現(xiàn)一個(gè)現(xiàn)象,剛開始發(fā)出的朋友圈剛開始很正常,但是過了幾分鐘后,提示我們發(fā)送失敗!這很很尷尬啊,明明剛開始你什么也沒說啊,到了最關(guān)鍵的時(shí)候你告訴我不行了..

不要被高大上的技術(shù)嚇到了,無非就是做了一些小技巧而已,真的很基礎(chǔ),但是也真的很實(shí)用。

在討論技術(shù)前首先聲明一些初始條件。

對(duì)數(shù)據(jù)庫表結(jié)構(gòu)進(jìn)行了一些特殊改造: 朋友圈內(nèi)容表有一個(gè)特殊的字段status, status值有兩種情況,值可以為1或者2,
值為1是朋友圈未發(fā)布。 值為2是朋友圈已發(fā)布。 (暫時(shí)看不懂為什么這樣做的同學(xué),可以先繼續(xù)閱讀,后面會(huì)講解)

此篇文章的秒發(fā)功能指的有圖片的情況下使用,因?yàn)橛袌D片的話,圖片上傳太慢,所以需要采用秒發(fā)機(jī)制,但是沒有圖片純文字的話,就沒太大的必要了,因?yàn)槲谋緜鬏斄亢艿停凑照A鞒贪l(fā)送即可。

此篇文章的代碼是基于PhalApi框架(http://www.phalapi.net/),語法都比較簡(jiǎn)單,有過ORM操作經(jīng)驗(yàn)的同學(xué)應(yīng)該都看得懂

此篇文章主要講解APP的秒發(fā)功能,WEB端不是特別需要這個(gè)功能,因?yàn)楝F(xiàn)代網(wǎng)絡(luò)足以我們的PC一次性發(fā)送很多很多張圖片(10M/s,20M/s)

大方向討論一下整個(gè)執(zhí)行流程:

客戶端調(diào)用發(fā)布API,服務(wù)端進(jìn)行發(fā)布內(nèi)容(publish.php),如果是有圖片,那么客戶端還要額外調(diào)用一個(gè)上傳API(upload.php),在這個(gè)上傳API(upload.php)還沒完成工作的時(shí)候,客戶端會(huì)直接告訴你發(fā)布成功(其實(shí)當(dāng)前是沒有上傳完成,后面有一個(gè)進(jìn)程在拼命幫你上傳著呢),然后客戶端會(huì)把你發(fā)的文字和圖片暫時(shí)拼接好顯示給你看(當(dāng)前只有你能看到,你朋友圈其他人是看不到的),然后等待著上傳API(upload.php)的結(jié)果/當(dāng)然也可能上傳超時(shí)(通常一分鐘內(nèi)會(huì)出結(jié)果),如果成功的話則順利上傳,失敗的話則報(bào)發(fā)送失敗,但是在等待結(jié)果的一分鐘之內(nèi),他會(huì)先讓你覺得你已經(jīng)發(fā)送了,除非上傳失敗,才會(huì)在后來提醒你。

那么讓我們?cè)诩夹g(shù)層面來分析一下這套機(jī)制吧:

當(dāng)我們點(diǎn)上右上角的發(fā)送鍵后,有兩個(gè)進(jìn)程在同時(shí)啟動(dòng),其中一個(gè)進(jìn)程是幫你上傳文本并且告訴你已經(jīng)發(fā)送成功啦(publish.php),另外一個(gè)進(jìn)程是偷偷去上傳你發(fā)的圖片(upload.php),具體代碼如下:

Publish.php

 0) ? 1 : 2;
 
//拼接入庫數(shù)據(jù)
 
$where_data = array( "status"=> $status)
 
//數(shù)據(jù)入庫
 
DI()->notorm-> friends ->insert($where_data);
 
?>

看出玄妙了嗎?我們對(duì)入庫的status字段進(jìn)行了一次判斷,分別會(huì)有1(未發(fā)布)和2(已發(fā)布)兩種情況,那么在讀取數(shù)據(jù)的時(shí)候我們應(yīng)該怎么做呢(list.php)?

那么展示頁面就是這樣:

Lists.php

  notorm->friend->select("f_id")->where("status > 1 OR (status = 1 && u_id = ($u_id))")->fetchAll()
 
//Code..
 
//獲取圖片信息
//通過內(nèi)容列表取得對(duì)應(yīng)的圖片,如果取不到但是該內(nèi)容又有圖片的話,就在客戶端層面講剛剛發(fā)的圖片拼接上去,讓他先顯示出來
 
foreach($data["text"] as $k => $v){
$data["pic"] = DI()->notorm->pic->select("圖片地址")->where("f_id",$v)->fetchAll();
} 
 
 
//code .. 
?>

此處的where條件是秒發(fā)機(jī)制的最關(guān)鍵的地方:

status大于1(已發(fā)表)或者等于1(未發(fā)布),(tips:status在有圖片的情況下默認(rèn)值為1)但是屬于當(dāng)前用戶發(fā)布的內(nèi)容,都可以讀出來,這就有一個(gè)很奇妙的現(xiàn)象,就是無論如何,我們自己發(fā)的朋友圈,自己永遠(yuǎn)是可以讀出來的,但是其他人就不一定了(因?yàn)槿绻袌D片的話,還需要去調(diào)用另外一個(gè)進(jìn)程上傳圖片,然后在那個(gè)進(jìn)程將status改為2)

那么還有最后一個(gè)關(guān)鍵點(diǎn),就是負(fù)責(zé)上傳圖片的那個(gè)進(jìn)程(upload.php),這個(gè)是真實(shí)上傳圖片的邏輯,

有幾張圖片,這么upload.php就會(huì)被調(diào)用幾次

每次上傳成功后將圖片行的字段status改成2

upload.php

 2);
 
DI()->notorm->friend->select("u_id")->where("u_id, $u_id)-->update($status_data);
 
}else{
 
Code…
 
}

經(jīng)過以上的幾個(gè)操作(首先是publish.php,如果有圖片上傳的話則調(diào)用upload.php,展示的時(shí)候是list.php)。

不知道大家看出門道沒有,和我們平常寫的發(fā)布功能不同的是,上傳upload.php功能被獨(dú)立出來了,改裝后的發(fā)布publish.php會(huì)用最快的速度將你的文本內(nèi)容存進(jìn)數(shù)據(jù)庫,并且如果有圖片內(nèi)容的話,他會(huì)多帶帶調(diào)用上傳API upload.php。

最關(guān)鍵的是在顯示的時(shí)候做了一些小技巧,讓自己保證可以看到自己發(fā)的東西。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/21819.html

相關(guān)文章

  • 專訪Zynga CTO Cadir Lee,談?wù)?/em>Zynga的云計(jì)算與核心價(jià)值觀

    摘要:我們使用了很多的公共云資源,自己也建立了私有的云計(jì)算中心。那你們會(huì)給騰訊提供一些這方面的建議嗎會(huì)的,我們跟他們合作密切,我們之間的交流很頻繁。 Cadir Lee,現(xiàn)任Zynga CTO,統(tǒng)管公司的技術(shù)平臺(tái)和海量基礎(chǔ)架構(gòu)的研發(fā)和創(chuàng)新。他管理數(shù)據(jù)分析、網(wǎng)絡(luò)運(yùn)維、安全等方面的團(tuán)隊(duì)。在加入Zynga之前,他擔(dān)任Support.com的CTO11年之久,而Support.com也是他和Zynga創(chuàng)始...

    ThinkSNS 評(píng)論0 收藏0
  • 前端閱讀 - 收藏集 - 掘金

    摘要:實(shí)現(xiàn)不定期更新技巧前端掘金技巧,偶爾更新。統(tǒng)一播放效果實(shí)現(xiàn)打字效果動(dòng)畫前端掘金前端開源項(xiàng)目周報(bào)前端掘金由出品的前端開源項(xiàng)目周報(bào)第四期來啦。 Web 推送技術(shù) - 掘金騰訊云技術(shù)社區(qū)-掘金主頁持續(xù)為大家呈現(xiàn)云計(jì)算技術(shù)文章,歡迎大家關(guān)注! 作者:villainthr 摘自 前端小吉米 伴隨著今年 Google I/O 大會(huì)的召開,一個(gè)很火的概念--Progressive Web Apps ...

    lingdududu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

LeexMuller

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<