久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發帖
查看: 2021|回復: 0

DISCUZX3/X25論壇云上報/計劃任務異步機制方案1.0.2beta[7.22日...

56

主題

1470

回帖

3萬

積分

管理員

貢獻
2074 點
金幣
1389 個
樓主
發表于 2022-4-20 15:17:16 | 只看樓主 |只看大圖 |倒序瀏覽 |閱讀模式
DISCUZX3/X25論壇云上報/計劃任務異步機制方案1.0.2beta[7.22日更新]


7.22日更新
1,優化超時問題
2,修正一個Exception錯誤


很多站長開啟了防水墻等功能,在每次發帖的時候都會同步請求云端,這樣當網絡不暢的時候很容易導致“卡頓”的情況出現影響用戶體驗。

同理,論壇的計劃任務也是把論壇后臺的各種任務附加到用戶的訪問動作上,給用戶造成論壇突然很卡了的假象。
于是,我們開發了這個論壇的異步機制來處理這個問題。


什么是異步?:

在執行過程中,我們把那些會造成卡的部分分離出來,放到后臺來執行。

方案原理:
我們借助redis的隊列機制的BLPOP方法,在一個死循環中等待隊列中的可彈出的元素,否則就阻塞連接。
在后臺處理前臺提交過來的上報任務。

方案前提:
1,獨立服務器,能執行命令行,并且安裝了redis服務以及php-redis擴展。
2,服務器能執行計劃任務。

實施步驟:
1,到 http://www.9999xn.com/thread-12045-1-1.html 按提示安裝框架。如果已經安裝好可跳過此步。
2,關閉論壇,此過程大約需要5~15分鐘。
3,確保論壇已經安裝好redis以及php-redis擴展,如果沒有安裝可以參考帖子下方的方法。
4,下載帖子中的附件,并上傳到服務器(不會覆蓋任何文件)
5,切換到extend/bin目錄,執行如下命令:
  1. ~$nohup php bin_async_cron.php&
復制代碼
6,在配置文件的最下方加入如下配置:
  1. $_config['extend']['asynctask']['on'] = 1;
復制代碼
在配置文件中找到如下兩項按如下配置:
  1. $_config['remote']['on'] = '1';
  2. $_config['remote']['cron'] = '1';
復制代碼
7,執行命令:
  1. ~$crontab -e
復制代碼
添加如下代碼到最后一行
  1. * * * * * curl "http://你的站/api/remote/index.php?mod=cron"
復制代碼
8,可以到bin目錄下查看out文件,里面記錄了云上報日志,如果發現里面的剩余成員數一直在增加可以再次執行步驟5,新增一個進程來執行。

注意事項:
1,為了避免重啟后任務丟失,建議把步驟5添加到開機啟動里。
2,由于linux計劃任務最多每分鐘執行一次,所以論壇的任務執行可能有所延后而不是準點執行,比如今日發帖的任務可能就不是準點更新而是延后了幾分鐘。
3,請限制extend/bin目錄只能本機訪問,尤其是該腳本存在死循環,一定不要在瀏覽器下執行。

linux系統安裝redis服務簡單步驟:
1,一般在/usr/local/src下,執行wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz
2,解壓 tar -zxf redis-2.6.14.tar.gz 然后切換到這個目錄。
3,make
4,一般到/etc/sysctl.conf里添加vm.overcommit_memory=1,然后reboot,這樣會允許分配所有內存避免不能啟動redis。
5,在redis.conf中修改一下配置,最重要的是修改如下:
daemonize yes
把它轉換成駐守進程,其余配置請參考手冊。
6,redis-server redis.conf啟動redis,如果沒有redis-server命令,可以把src下面的redis-*都復制到/usr/bin目錄下
7,redis-cli啟動客戶端測試啟動是否正常。

PHP-REDIS客戶端安裝,參考:https://github.com/nicolasff/phpredis

async_task1.0.2_X3X25.zip (4.28 KB, 下載次數: 193)

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-7-3 04:42 , Processed in 0.057014 second(s), 12 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表