需求描述:
使用百度雲平台的視訊解決方案,它的解決方案是手機端先上傳至自有伺服器,再由自有伺服器上傳至百度的伺服器,現在希望php後台在完成用戶上傳至自有伺服器時,返回使用者上傳成功,然後執行上傳至百度伺服器的操作。 現在遇到的問題是:PHP後端是等待所有的執行完成後,才會對客戶端進行回傳。搞得每次都會等很久。
不知道各位大神可以指導一下小子嗎?做前端的,php初級,遇到很多的問題,謝謝各位大神們。
回覆內容:
需求描述:
使用百度雲平台的視訊解決方案,它的解決方案是手機端先上傳至自有伺服器,再由自有伺服器上傳至百度的伺服器,現在希望php後台在完成用戶上傳至自有伺服器時,返回使用者上傳成功,然後執行上傳至百度伺服器的操作。 現在遇到的問題是:PHP後端是等待所有的執行完成後,才會對客戶端進行回傳。搞得每次都會等很久。
不知道各位大神可以指導一下小子嗎?做前端的,php初級,遇到很多的問題,謝謝各位大神們。
如果你的PHP服務用的是PHP-FPM,可以專門開一個用於處理視頻上傳操作的進程池pool,腳本用fastcgi_finish_request快速響應用戶完成請求後,執行耗時的上傳處理.
<code><?php echo '手机端视频先上传至自有服务器'; sleep(10); echo '上传成功'; fastcgi_finish_request(); //响应用户,结束请求 echo '程序继续操作,从自有服务器上传至百度服务器'; sleep(10);</code></code>
在檔案上傳過程中PHP-FPM並不會被阻塞,因為Nginx接收完上傳的內容後才一次性交給PHP-FPM.
"從自有伺服器上傳至百度伺服器"這個操作則會阻塞佔用一個PHP -FPM工作進程.
這時可以考慮建立的upload進程池來處理這個操作,避免阻塞系統的其他腳本運行.
<code>nginx.conf: upload.php脚本的处理都交给监听9001的PHP-FPM进程池处理 location = /upload.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9001; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } php-fpm: 正常的脚本由静态www池处理,网络阻塞脚本由动态upload池处理 [www] listen = 127.0.0.1:9000 pm = static pm.max_children = 4 [upload] listen = 127.0.0.1:9001 pm = dynamic pm.max_children = 8 pm.start_servers = 4 pm.min_spare_servers = 4 pm.max_spare_servers = 4</code>
可以使用佇列,使用者傳完之後直接壓一個任務到佇列裡然後返回上傳完成,系統再執行個定時任務去跑這個佇列。隊列應用形式有好幾種,你搜搜看

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

依賴注入在PHP中通過外部注入方式提供對象依賴,提高代碼的可維護性和靈活性。其實現方式包括:1.構造函數注入,2.設值注入,3.接口注入,使用依賴注入可以解耦、提高可測試性和靈活性,但需注意可能增加複雜性和性能開銷。

在PHP中實現依賴注入(DI)可以通過手動注入或使用DI容器來完成。 1)手動注入通過構造函數傳遞依賴,如UserService類註入Logger。 2)使用DI容器可以自動管理依賴,如Container類管理Logger和UserService。實現DI可以提高代碼的靈活性和可測試性,但需要注意過度注入和服務定位器反模式等陷阱。

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

stickysessensureuserRequestSarerOutedTothesMeServerForsessionDataConsisterency.1)sessionIdentificeAssificationAssigeaSsignAssignSignSuserServerServerSustersusiseCookiesorUrlModifications.2)一致的ententRoutingDirectSsssssubsequeSssubsequeSubsequestrequestSameSameserver.3)loadBellankingDisteributesNebutesneNewuserEreNevuseRe.3)

phpoffersvarioussessionsionsavehandlers:1)文件:默認,簡單的ButMayBottLeneckonHigh-trafficsites.2)Memcached:高性能,Idealforsforspeed-Criticalapplications.3)REDIS:redis:similartomemememememcached,withddeddeddedpassistence.4)withddeddedpassistence.4)databases:gelifforcontrati forforcontrati,有用

PHP中的session是用於在服務器端保存用戶數據以在多個請求之間保持狀態的機制。具體來說,1)session通過session_start()函數啟動,並通過$_SESSION超級全局數組存儲和讀取數據;2)session數據默認存儲在服務器的臨時文件中,但可通過數據庫或內存存儲優化;3)使用session可以實現用戶登錄狀態跟踪和購物車管理等功能;4)需要注意session的安全傳輸和性能優化,以確保應用的安全性和效率。

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

禪工作室 13.0.1
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用