當前位置:才華齋>計算機>php語言>

淺析php如何實現App常用的秒發功能

php語言 閱讀(1.59W)

很多社交軟體都是用了一種秒發機制,讓使用者的體檢感很好,今天我們也來談談這些社交軟體中常用的小技巧。就跟隨本站小編一起去了解下吧,想了解更多相關資訊請持續關注我們應屆畢業生考試網!

淺析php如何實現App常用的秒發功能

  前言

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

但是我們停下來用技術手段思考一下,這可能嗎?有些2G網路最多也就幾十K網速,我們的圖片隨便一張都幾M,即使壓縮過也有幾百K,怎麼可能瞬間發出訊息呢?

現在想想,是不是有些詭異呢~

其實吧,眾多社交軟體(微博,微信)都是用了一種秒發機制。他並不是真的先去傳送然後傳送完畢再告訴你傳送成功,而是直接告訴你傳送成功,然後後臺再偷偷去上傳你發的東西,所以在網速不好的時候我們會經常發現一個現象,剛開始發出的朋友圈剛開始很正常,但是過了幾分鐘後,提示我們傳送失敗!這很很尷尬啊,明明剛開始你什麼也沒說啊,到了最關鍵的時候你告訴我不行了..

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

  在討論技術前首先宣告一些初始條件。

1.對資料庫表結構進行了一些特殊改造: 朋友圈內容表有一個特殊的欄位status, status值有兩種情況,值可以為1或者2,

值為1是朋友圈未釋出。 值為2是朋友圈已釋出。 (暫時看不懂為什麼這樣做的同學,可以先繼續閱讀,後面會講解)

2.此篇文章的秒發功能指的有圖片的情況下使用,因為有圖片的話,圖片上傳太慢,所以需要採用秒發機制,但是沒有圖片純文字的'話,就沒太大的必要了,因為文字傳輸量很低,按照正常流程傳送即可。

3.此篇文章的程式碼是基於PhalApi框架,語法都比較簡單,有過ORM操作經驗的同學應該都看得懂

4.此篇文章主要講解APP的秒發功能,WEB端不是特別需要這個功能,因為現代網路足以我們的PC一次性發送很多很多張圖片(10M/s,20M/s)

  大方向討論一下整個執行流程:

客戶端呼叫釋出API,服務端進行釋出內容(),如果是有圖片,那麼客戶端還要額外呼叫一個上傳API(),在這個上傳API()還沒完成工作的時候,客戶端會直接告訴你釋出成功(其實當前是沒有上傳完成,後面有一個程序在拼命幫你上傳著呢),然後客戶端會把你發的文字和圖片暫時拼接好顯示給你看(當前只有你能看到,你朋友圈其他人是看不到的),然後等待著上傳API()的結果/當然也可能上傳超時(通常一分鐘內會出結果),如果成功的話則順利上傳,失敗的話則報傳送失敗,但是在等待結果的一分鐘之內,他會先讓你覺得你已經發送了,除非上傳失敗,才會在後來提醒你。

那麼讓我們在技術層面來分析一下這套機制吧:

當我們點上右上角的傳送鍵後,有兩個程序在同時啟動,其中一個程序是幫你上傳文字並且告訴你已經發送成功啦(),另外一個程序是偷偷去上傳你發的圖片(),具體程式碼如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<?php

//正常獲取資料(文字,圖片,位置資訊等)